如何将数据传递到R中的堆积条形图?

时间:2015-11-11 12:47:21

标签: r

我有一个csv文件,其中的数据结构如下:

model,pass,fail
a,10,5
b,5,10
c,15,5

我想制作一个如下所示的堆积条形图: stacked bar chart

我尝试使用以下代码(data是导入的csv文件的名称):

barplot(as.matrix(data), col=c("light green","light yellow"))
legend("topright", fill=c("light green","light yellow"), legend=rownames(data))

...但是这会将标题名称作为数据点。我应该如何将“数据”传递给barplot函数,以便每个模型(a,b,c)都是一个条形码?

(因为我是R的新手,我现在不想使用像ggplot这样的库)

1 个答案:

答案 0 :(得分:0)

> model <- c("a", "b", "c")
> pass <- c(10, 5, 15)
> fail <- c(5, 10, 5)
> dat <- data.frame(model, pass, fail)
> 
> library(ggplot2)
> library(reshape2)
> dat <- melt(dat)
Using model as id variables
> dat
  model variable value
1     a     pass    10
2     b     pass     5
3     c     pass    15
4     a     fail     5
5     b     fail    10
6     c     fail     5
> ggplot(dat, aes(x = model, y = value, fill = variable)) + geom_bar(stat = "identity")

enter image description here

如果您不想使用ggplot2包,可以尝试

model <- c("a", "b", "c")
pass <- c(10, 5, 15)
fail <- c(5, 10, 5)
dat <- data.frame(pass, fail)
dat <- t(dat)
rownames(dat) <- model

barplot(dat, xlab = "Model", col = c("light green","light yellow")) 
legend("top", legend = rownames(dat), fill = c("light green", "light yellow"))

enter image description here