Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 当aes(组=…)而非aes(填充/形状=…)时,闪避错误条的位置错误_R_Ggplot2_Errorbar_Aesthetics - Fatal编程技术网

R 当aes(组=…)而非aes(填充/形状=…)时,闪避错误条的位置错误

R 当aes(组=…)而非aes(填充/形状=…)时,闪避错误条的位置错误,r,ggplot2,errorbar,aesthetics,R,Ggplot2,Errorbar,Aesthetics,用position=“dodge”绘制错误条最近让我很头疼。。。奇怪的是,用美学的形状或填充(不适用于错误条)来避开它们似乎效果不错。但是,避开美学组会将钢筋置于意外位置。我想知道这是否是ggplot2错误 我喜欢在条形图或方框图后面放置自定义错误条。有时我会给情节中的不同元素添加特殊的颜色。出于这个原因,我通常不在ggplot()函数中包含aes(),而是在geom或stats中包含 下面是一个“位置正确”的错误条示例: 库(ggplot2) 图书馆(dplyr) 牙齿生长%>% 突变(剂量=

position=“dodge”
绘制错误条最近让我很头疼。。。奇怪的是,用美学的
形状
填充
(不适用于错误条)来避开它们似乎效果不错。但是,避开美学
会将钢筋置于意外位置。我想知道这是否是ggplot2错误

我喜欢在条形图或方框图后面放置自定义错误条。有时我会给情节中的不同元素添加特殊的颜色。出于这个原因,我通常不在
ggplot()
函数中包含
aes()
,而是在geom或stats中包含

下面是一个“位置正确”的错误条示例:

库(ggplot2)
图书馆(dplyr)
牙齿生长%>%
突变(剂量=因子(剂量))%>%
ggplot(aes(剂量,透镜))+
统计箱线图(aes(fill=supp),geom=“errorbar”,position=“dodge”)+
几何箱线图(aes(填充=supp),position=“道奇”,coef=0)

这将产生警告
警告:忽略未知美学:填充
。使用
aes(shape=supp)
打印相同的绘图

我希望使用相同的绘图,但通过与“group”(aes(group=supp)
)交换填充/形状,不会出现警告。这不会产生任何警告,但会产生非常意外的结果:

ToothGrowth%>%
突变(剂量=因子(剂量))%>%
ggplot(aes(剂量,透镜))+
统计箱线图(aes(组=supp),geom=“errorbar”,position=“dodge”)+
几何箱线图(aes(填充=supp),position=“道奇”,coef=0)


有人能解释一下这种行为吗?使用
aes(group=…)
aes(fill=…)
分组是否应该在闪避位置上表现出类似的行为?

代码忽略未知美学:fill

stat_boxplot(aes(fill = supp), geom = "errorbar", position = "dodge") 
而代码考虑了美学
group=supp
,并为OJVC分别给出了两个错误条

stat_boxplot(aes(group = supp), geom = "errorbar", position = "dodge")
完整代码

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



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\u集团\u订单
(重点添加):

默认情况下,组设置为所有离散对象的交互 绘图中的变量。这通常会正确地划分数据,但是 如果没有,或者在绘图中没有使用离散变量, 您需要通过映射显式定义分组结构 分组到每个组具有不同值的变量

误差条组自动设置为剂量(已转换为因子,即离散变量)和supp(已经是牙齿生长数据集中的因子)的相互作用。换句话说,为了计算箱线图汇总统计数据,将剂量
c(0.5,1,1.5)
和SUP
c(“OJ”、“VJ”)
的每种组合作为一个单独的组处理。因此,显示的错误条与箱线图图层完美匹配,即使填充不是
geom\u errorbar
的相关美学

错误条的组显式设置为supp和onlysupp。这会覆盖默认行为,因此我们只有两个组(一个用于“OJ”,另一个用于“VJ”),而不是上面的6个组。这会导致错误条层和箱线图层之间不匹配

可以显式设置组映射以模拟默认行为:

p1 <- ToothGrowth %>%
  mutate(dose = factor(dose)) %>%
  ggplot(aes(dose, len)) +
  stat_boxplot(aes(group = interaction(dose, supp)), geom = "errorbar", position = "dodge") +
  geom_boxplot(aes(fill = supp), position = "dodge", coef = 0)
p1
layer_data(p1, 1L) # view data associated with error bar layer
layer_data(p1, 2L) # view data associated with boxplot layer

p2 <- ToothGrowth %>%
  mutate(dose = factor(dose)) %>%
  ggplot(aes(dose, len)) +
  stat_boxplot(aes(group = interaction(supp, dose)), geom = "errorbar", position = "dodge")+
  geom_boxplot(aes(fill = supp), position = "dodge", coef = 0)
p2
layer_data(p2, 1L) # view data associated with error bar layer
layer_data(p2, 2L) # view data associated with boxplot layer
p1%
突变(剂量=因子(剂量))%>%
ggplot(aes(剂量,透镜))+
统计箱线图(aes(组=相互作用(剂量,支持)),geom=“errorbar”,position=“dodge”)+
几何箱线图(aes(填充=supp),position=“道奇”,coef=0)
p1
图层_数据(p1,1L)#查看与错误条图层相关的数据
图层数据(p1,2L)#查看与箱线图图层相关的数据
p2%
突变(剂量=因子(剂量))%>%
ggplot(aes(剂量,透镜))+
统计箱线图(aes(组=相互作用(支持,剂量)),geom=“errorbar”,position=“dodge”)+
几何箱线图(aes(填充=supp),position=“道奇”,coef=0)
p2
图层_数据(p2,1L)#查看与错误条图层相关的数据
图层数据(p2,2L)#查看与箱线图图层相关的数据

注:
interaction(dose,supp)
interaction(supp,dose)
将生成相同的图形,外观方面,但是如果要比较与每个层相关的基础数据,
interaction(dose,supp)
以与默认值相同的顺序生成组,而
interaction(supp,dose)
没有。

使用
并获得预期分组和回避图的一种可能性是
aes(组=相互作用(支持,剂量))
。然而,我还不清楚
aes(group=supp)
aes(fill=supp)
之间的行为差异
ToothGrowth %>% 
  mutate(dose = factor(dose)) %>% 
  ggplot(aes(dose, len)) +
  stat_boxplot(aes(group = supp), geom = "errorbar", position = "dodge")
p1 <- ToothGrowth %>%
  mutate(dose = factor(dose)) %>%
  ggplot(aes(dose, len)) +
  stat_boxplot(aes(group = interaction(dose, supp)), geom = "errorbar", position = "dodge") +
  geom_boxplot(aes(fill = supp), position = "dodge", coef = 0)
p1
layer_data(p1, 1L) # view data associated with error bar layer
layer_data(p1, 2L) # view data associated with boxplot layer

p2 <- ToothGrowth %>%
  mutate(dose = factor(dose)) %>%
  ggplot(aes(dose, len)) +
  stat_boxplot(aes(group = interaction(supp, dose)), geom = "errorbar", position = "dodge")+
  geom_boxplot(aes(fill = supp), position = "dodge", coef = 0)
p2
layer_data(p2, 1L) # view data associated with error bar layer
layer_data(p2, 2L) # view data associated with boxplot layer