-1

我在 .csv 文件中有以下数据:

Name  marks1 marks2    
xy      10    30
yz      20    40
zx      30    40
vx      20    20
vt      10    20

如何在 y 轴和 x 轴上绘制一个marks1图形marks2

y <- cbind(data$marks1,data$marks2)
x <- cbind(data$Name)
matplot(x,y,type="p")

我需要一个条形图,由于 x 轴数据量很大,我需要正确对齐它们并放置数字

例如图表应该像

标记 1 标记 2 在同一条中以两种不同的颜色标记,并在上面写上标记

#read csv file
 aau <- read.csv("",head=TRUE,sep=",")

#convert into matrix format
 aaumatrix <- as.matrix(aau)

#create barplot
 barplot(aaumatrix)


#check for more attributes of barplot
 ?barplot
4

1 回答 1

1

你想要什么的描述有点混乱,但这是我最好的解释。

dat <- read.table(textConnection("Name  marks1 marks2                                                                                  
xy      10    30                                                                                                                       
yz      20    40                                                                                                                       
zx      30    40                                                                                                                       
vx      20    20                                                                                                                       
vt      10    20"), header = TRUE)

library(ggplot2)
library(reshape)

datm <- melt(dat, id.vars = "Name")

datlab <- dat
datlab$y <- datlab$marks1
datlab <- melt(datlab, id.vars = c("Name", "y"))

## set y value to be in the center of the respective bar 
datlab$y <- ifelse(datlab$variable == "marks1", datlab$y / 2, datlab$y + datlab$value / 2)

p <- ggplot() + geom_bar(data = datm, aes(value, x = Name, fill = variable))
p + geom_text(data = datlab, aes(x = Name, y = y, label = value))

编辑:另一种选择

datlab <- dat
datlab$y <- rowSums(datlab[c("marks1", "marks2")])
datlab <- melt(datlab, id.vars = c("Name", "y"))
## set y value to be in the center of the respective bar                                                                               
datlab$y <- ifelse(datlab$variable == "marks1", datlab$value / datlab$y / 2, 1 - datlab$value / datlab$y / 2)

p <- ggplot() + geom_bar(data = datm, aes(x = Name, fill = variable, y = value), position = "fill")
p + geom_text(data = datlab, aes(x = Name, y = y, label = value))

选项1:

在此处输入图像描述 选项 2:

在此处输入图像描述

于 2013-07-09T04:22:17.323 回答