条形图没有分组变量

Taw*_*awk 5 plot r bar-chart

这似乎是最简单的事情,但我无法在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)

Jaa*_*aap 8

您可以做的是使用reshape2(data.tabletidyr)将数据重新整形为长格式,而不指定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)

这使:

在此输入图像描述