ggplot2:基于颜色以外的变量进行位置减淡

Kez*_*Kez 2 r ggplot2 boxplot

几天前,我对此也提出了类似的问题,但是我的需求略有变化,并且遇到了麻烦。我有一个看起来像这样的数据集:

http://pastebin.com/a1PzfeG1

而且我使用了以下代码:

ggplot( aes(x=factor(ATM),y=value), data=CONDITION ) +
  geom_boxplot( aes(fill=factor(TEMP))) +
  geom_point( aes(color=factor(PARENT)), position=position_dodge(width=0.75) ) + 
facet_wrap(~ variable, ncol = 1) + 
scale_fill_manual(values = c("#88CCFF","#FF6666")) +
scale_colour_manual(values = c("#336699","#990000","#009900")) +
labs(title = "(Fig. 1) Effect of temperature and hydrostatic pressure on the development of larval Crepidula fornicata") +
xlab("Pressure \n (atm)") +
ylab("Number of Larvae") +
guides(fill=guide_legend(title="Temperature (°C)"),colour=guide_legend(title="Parent"))
Run Code Online (Sandbox Code Playgroud)

要制作如下所示的图形:

图形

现在,如果我将geom_point的颜色设置为factor(TEMP),则位置闪避将它们与相应的箱形图对齐,但是当我将其更改为基于父级时,它现在将根据该变量进行偏移。我想知道的是,是否有一种方法可以根据TEMP变量将这些点对齐,但可以根据PARENT对它们进行着色。

提前致谢,

凯兹

Bro*_*ieG 5

发生这种情况是因为TEMP有两个级别,而PARENT只有三个级别。 ggplot会根据您拥有的关卡数来躲避。由于您有两个箱形图,当您的点有两个级别时,闪避将正确对齐。如果您有三个箱形图,那么PARENT躲闪点会很好。这是使用的解决方法group

geom_point( aes(group=factor(TEMP), color=factor(PARENT)), position=position_dodge(width=0.75)) 
Run Code Online (Sandbox Code Playgroud)

之所以可行,是因为color如果没有另外定义组,默认情况下将分配组。由于我们在此积极指定组,因此基于显式组而不是隐含颜色的组,这些优先级和闪避级闪避。