使用 ggplot2 在 barplot 中显示多个数字列?
using ggplot2 to show multiple number columns in barplot?
有人可以帮忙在 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
感谢您的高级帮助。
我猜您想在 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")
我认为更好的选择是 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)
有人可以帮忙在 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
感谢您的高级帮助。
我猜您想在 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")
我认为更好的选择是 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)