我有一个csv文件,其中的数据结构如下:
model,pass,fail
a,10,5
b,5,10
c,15,5
我尝试使用以下代码(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这样的库)
答案 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")
如果您不想使用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"))