几天前我问了一个类似的问题,但我的需求略有改变,我遇到了麻烦。我有一个如下所示的数据集:
我使用了以下代码:
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"))
制作如下图:
现在,如果我将geom_point的颜色设置为因子(TEMP),那么位置闪避将它们与相应的箱形图对齐,但当我将其更改为基于父级时,它现在根据该变量对其进行偏移代替。我想知道的是,是否有一种方法可以根据TEMP变量对点进行排列,但是根据PARENT对它们进行着色。
提前致谢,
KEZ
答案 0 :(得分:5)
这种情况正在发生,因为TEMP
有两个级别,而PARENT
有三个级别。 ggplot
会根据你有多少级别来躲闪。由于你有两个箱形图,当你的积分有两个等级时,闪避将正确排列。如果你有三个箱图,那么PARENT
闪避点就可以了。以下是使用group
的解决方法:
geom_point( aes(group=factor(TEMP), color=factor(PARENT)), position=position_dodge(width=0.75))
这样做是因为默认情况下color
将分配组(如果未另外定义组)。因为在这里我们积极地指定群体,那些基于明确群体而不是颜色隐含群体的流行和闪避闪避。