【发布时间】:2019-05-27 07:57:10
【问题描述】:
用position = "dodge" 绘制误差线最近让我很头疼……奇怪的是,用美学shape 或fill(不应该适用于误差线)来避开它们似乎效果很好。然而,用美学躲避group 会将条形置于意想不到的位置。我想知道这是否可能是一个 ggplot2 错误。
我喜欢在条形图或箱线图后面放置自定义误差线。有时我会为情节的不同元素赋予特殊的颜色。出于这个原因,我经常将aes() 不包含在ggplot() 函数中,而是包含在geoms 或stats 中。
这是一个“放置良好”的错误栏示例:
library(ggplot2)
library(dplyr)
ToothGrowth %>%
mutate(dose = factor(dose)) %>%
ggplot(aes(dose, len)) +
stat_boxplot(aes(fill = supp), geom = "errorbar", position = "dodge") +
geom_boxplot(aes(fill = supp), position = "dodge", coef = 0)
这会产生警告Warning: Ignoring unknown aesthetics: fill。使用aes(shape = supp) 打印相同的图。
我希望得到相同的情节,但不会通过将填充/形状与“组”(aes(group = supp)) 交换来发出警告。这不会产生警告,但会产生非常意外的结果:
ToothGrowth %>%
mutate(dose = factor(dose)) %>%
ggplot(aes(dose, len)) +
stat_boxplot(aes(group = supp), geom = "errorbar", position = "dodge") +
geom_boxplot(aes(fill = supp), position = "dodge", coef = 0)
有人能解释一下这种行为吗?与aes(group = ...) 和aes(fill = ...) 分组不应该在闪避位置上表现相似吗?
【问题讨论】:
-
使用
group并获得具有预期分组和躲避的情节的一种可能性是aes(group = interaction(supp, dose))。但是,我还不清楚aes(group = supp)和aes(fill = supp)之间的行为差异
标签: r ggplot2 errorbar aesthetics