这似乎是最简单的事情,但我无法在R上弄清楚这一点.出于描述目的,我想创建一个条形图,显示多个问题/变量的均值和误差图.我的数据基于匿名响应,因此没有分组变量.
有没有办法在R上做到这一点?下面是我的数据的示例.我想在同一个条形图中绘制每个变量的平均值和标准差.
dat <- data.frame(satisfaction = c(1, 2, 3, 4),
engaged = c(2, 3, 4, 2),
relevant = c(4, 1, 3, 2),
recommend = c(4, 1, 3, 3))
Run Code Online (Sandbox Code Playgroud)
您可以做的是使用reshape2(data.table或tidyr)将数据重新整形为长格式,而不指定id变量并将所有列用作度量变量.之后,您可以创建一个例如ggplot2.使用:
library(reshape2)
library(ggplot2)
# reshape into long format
dat2 <- melt(dat, measure.vars = 1:4) # or just: melt(dat)
# create the plot
ggplot(dat2, aes(x = variable, y = value)) +
stat_summary(geom = 'bar', fun.y = 'mean', width = 0.7, fill = 'grey') +
stat_summary(geom = 'errorbar', width = 0.2, size = 1.5) +
theme_minimal(base_size = 14) +
theme(axis.title = element_blank())
Run Code Online (Sandbox Code Playgroud)
得到:
更新:正如@GavinSimpson在他的回答中所指出的:对于可视化手段和标准错误,条形图不是最好的选择.作为替代方案,您还可以使用geom_pointrange:
ggplot(dat2, aes(x = variable, y = value)) +
stat_summary(geom = 'pointrange', fatten = 5, size = 1.2) +
theme_minimal(base_size = 14) +
theme(axis.title = element_blank())
Run Code Online (Sandbox Code Playgroud)
这使: