ggplot2:基于颜色以外的变量定位闪避

时间:2014-02-12 23:20:41

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

制作如下图:

Graph

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

提前致谢,

KEZ

1 个答案:

答案 0 :(得分:5)

这种情况正在发生,因为TEMP有两个级别,而PARENT有三个级别。 ggplot会根据你有多少级别来躲闪。由于你有两个箱形图,当你的积分有两个等级时,闪避将正确排列。如果你有三个箱图,那么PARENT闪避点就可以了。以下是使用group的解决方法:

geom_point( aes(group=factor(TEMP), color=factor(PARENT)), position=position_dodge(width=0.75)) 

这样做是因为默认情况下color将分配组(如果未另外定义组)。因为在这里我们积极地指定群体,那些基于明确群体而不是颜色隐含群体的流行和闪避闪避。