几天前我对此提出了类似的问题,但我的需求略有变化,并且遇到了麻烦。我有一个如下所示的数据集:
我使用了以下代码:
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 为它们着色。
提前致谢,
凯兹
最佳答案
发生这种情况是因为 TEMP
有两个级别,而 PARENT
有三个级别。 ggplot 会根据你的关卡数量进行躲避。由于您有两个箱线图,当您的点有两个级别时,闪避将正确排列。如果您有三个箱线图,则 PARENT
闪避点可以很好地排列。以下是使用 group
的解决方法:
geom_point( aes(group=factor(TEMP), color=factor(PARENT)), position=position_dodge(width=0.75))
这是有效的,因为如果没有另外定义组,默认情况下 color
将分配组。由于在这里我们主动指定组,因此这些组优先,并且闪避基于显式组而不是颜色隐含组。
关于r - ggplot2:基于颜色以外的变量进行位置躲避,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21742062/