使用ggplot2在barplot中显示多个数字列?

时间:2015-03-03 09:09:22

标签: r ggplot2

有人请帮助在R中使用ggplot2来显示一个条形图,我需要在x轴上显示列(第一,第二,第三,第四,第五)及其在y轴上的值吗?没有显示列" uname"。

    > head(golQ1Grades)
               qname          uname first second third fourth fifth 
1 onlinelernen_quiz_1          xxx   100      0     0      0     0      
2 onlinelernen_quiz_2        xxxx    100      0     0      0     0      
3 onlinelernen_quiz_4        xxxx     42     71     0      0     0       
4 onlinelernen_quiz_7        xxxx     85    100     0      0     0      
5 onlinelernen_quiz_1        xxx      85    100     0      0     0      
6 onlinelernen_quiz_3         xxxx    71      0     0      0     0       

感谢您的高级帮助。

2 个答案:

答案 0 :(得分:0)

我猜你想在Y轴上显示平均值。

library(ggplot2)

数据

dat<-data.frame(c(100,100,42,85,85,71), c(0,0,71,100,100,0), c(0,0,0,0,0,0), c(0,0,0,0,0,0), c(0,0,0,0,0,0))
names(dat)<-NULL

计算平均值并获取新数据

v1<-apply(dat, 2, mean)
nv1<-c("first","second","third", "fourth","fifth")
ndat<-data.frame(nv1, v1)

剧情

p <- ggplot(ndat, aes(factor(nv1), v1)) 
p + geom_bar(stat="identity")

答案 1 :(得分:0)

我认为更好的选择是dplyrtidyr。 (我稍微改变了data.frame

library(dplyr)
library(tidyr)
library(ggplot2)

df  <- data.frame(qname = letters[1:10],
                          first = seq(1,10,1), 
                          second = seq(10,100,10),
                          third = seq(2,20,2))

然后使用gather功能:

df <- df %>%
  gather(variable, value, -qname)

在你的情况下它将是

df <- golQ1Grades %>%
  gather(variable,value, -qname, -uname)

此外,它不是计算平均值,而是非常有用facet_grid

ggplot(df, aes(factor(qname),value))+
  geom_bar(stat = "identity")+
  facet_grid(.~variable)