条形图没有分组变量

时间:2016-05-16 22:35:43

标签: r plot 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))

2 个答案:

答案 0 :(得分: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())

给出:

enter image description here

更新:正如@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())

给出:

enter image description here

答案 1 :(得分:1)

虽然我知道你要求一个条形图,但数据的点图是另一种可视化,它关注手段和标准误差。如果一直到0的条形图不是那么有用,那么dotplot是一个很好的选择。

重用@Procrastinatus Maximus回答的对象和代码,我们有:

df.join()

产生

enter image description here