【问题标题】:Bar plot without grouping variable没有分组变量的条形图
【发布时间】:2016-09-12 20:34:56
【问题描述】:

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

【问题讨论】:

  • 如果你能找到你想要绘制的值,你可以绘制它们。照原样,我们能回答您的问题最多只能说“是”——这对任何人都没有用,因此我们可能会关闭您的问题。但是,如果您 make a reproducible example,分享一些示例数据 - 无论是模拟的还是通过 dput() 复制/粘贴的,并描述您想要的输出,有人可能会分享一些代码来向您展示如何做到这一点。
  • 请参阅我在上面发布的关于制作可重复示例的链接,并按照建议以友好的格式分享您的数据 - 模拟或通过 dput()。数据图像几乎是无用的。
  • 谢谢格雷戈尔。我在原始帖子中添加了一个模拟数据集。够了吗?
  • 好多了!我已经提名重新开放。关于更明确的问题 - 您的目标是让 x 轴成为列(例如,满意度、参与度……),并且对于每个列类别,您需要两个条形图,一个代表平均值,一个代表标准差。这是正确的吗?
  • @gregor 太好了,谢谢!那是正确的。但是,对于每一列,我想要一个条形 - 条形代表平均值,一条穿过条形的线代表标准偏差。

标签: r plot bar-chart


【解决方案1】:

您可以做的是使用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())

给予:


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

给出:

【讨论】:

  • 优秀。太感谢了!这非常有帮助!
【解决方案2】:

虽然我知道您要求绘制条形图,但数据的点图是另一种可视化方式,侧重于均值和标准误差。如果一直绘制到 0 的条形图信息量不大,那么点图是一个不错的选择。

重用@Procrastinatus Maximus 的答案中的对象和代码:

ggplot(dat2, aes(x = variable, y = value)) +
  stat_summary(geom = 'point', fun.y = 'mean', size = 2) +
  stat_summary(geom = 'errorbar', width = 0.2) +
  xlab(NULL) + 
  theme_bw()

产生

【讨论】:

  • 关于可视化手段和标准错误的观点完全正确!
  • twitter 和科学文献[1 上有一个关于条形图(和胡须)使用的“模因”。
猜你喜欢
  • 2015-07-29
  • 2017-11-29
  • 1970-01-01
  • 2018-04-01
  • 2021-10-16
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多