有人请帮助在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
感谢您的高级帮助。
答案 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)
我认为更好的选择是dplyr
和tidyr
。 (我稍微改变了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)