r - ggplot2:基于颜色以外的变量进行位置躲避

标签 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 为它们着色。

提前致谢,

凯兹

最佳答案

发生这种情况是因为 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/

相关文章:

还原列表结构

r - 向 ggplot2 点图添加另一个维度/变量

r - 将计数标签添加到聚类条形图 ggplot2

r - 使用 ggplot2 进行箱线图

r - 如何在ggplot2的箱线图中添加每组的观察数和中位数

r - 根据一组其他列中已识别的重复项将行折叠为多列的列表

r - 如何在R中用方括号{}包围字符串中的多个字符?

r - 当行包含的元素多于数据框中的列时,向数据框中添加行

r - 如何使用ggplot2在条形图中显示0值

python - 如何在一系列箱形图中的箱形图旁边显示数值平均值和标准值?