【问题标题】:How to create a box plot with superimposed points in different color?如何创建具有不同颜色叠加点的箱线图?
【发布时间】:2017-07-16 11:08:44
【问题描述】:

我目前正在尝试使用叠加点绘制箱形图。根据因子变量,箱线图中的点的颜色必须不同。代码运行良好,直到这里:

  MioBox <- ggplot(mydata, aes(x=mng, y=Active, fill=mng))+ 
  geom_boxplot(color="black", notch=TRUE)+ 
  geom_point(position="jitter", color="blue", alpha=.5)+ 
  geom_rug(side="l", color="black")+
  facet_grid(.~hor,scales = "free", space = "free")+
  labs(title='bla bla bla')

(见下图)

当我尝试根据变量plot为箱线图中的点添加颜色时

MioBox <- ggplot(mydata, aes(x=mng, y=Active, fill=mng))+ 
geom_boxplot(color="black", notch=TRUE)+ 
#geom_point(position="jitter", color="blue", alpha=.5)+ 
geom_rug(side="l", color="black")+
facet_grid(.~hor,scales = "free", space = "free")+
labs(title='bla bla bla')
MioBox + scale_fill_manual(values=c("#669966", "#CC9966", "#CCCC66"))+
geom_point(position="jitter",aes(color = factor(mydata$plot)))

我得到一个与变量图不匹配的箱线图,该变量图在每个箱线图中为每种颜色分配 3 个点。结果是我总是有 9 个点,但大多数时候一种颜色有 6 个,另一种颜色有 3 个,并且缺少一种颜色:

这是重现问题的表格:

mydata <- read.table(header=TRUE, text="
Active hor plot mng
7.20    F   1   CH
8.80    O   1   CH
9.30    F   1   CH
9.20    O   1   CH
9.70    F   1   CH
9.30    O   1   CH
9.10    F   2   CH
7.50    O   2   CH
7.50    F   2   CH
8.70    O   2   CH
9.90    F   2   CH
7.60    O   2   CH
9.70    F   3   CH
7.70    O   3   CH
8.90    F   3   CH
8.60    O   3   CH
8.30    F   3   CH
8.30    O   3   CH
8.50    L   1   CH
7.40    L   1   CH
8.00    L   1   CH
9.70    L   2   CH
8.90    L   2   CH
8.40    L   2   CH
9.80    L   3   CH
8.00    L   3   CH
7.00    L   3   CH
7.30    F   1   Fe
6.60    O   1   Fe
6.50    F   1   Fe
6.60    O   1   Fe
6.90    F   1   Fe
5.80    O   1   Fe
6.60    F   2   Fe
7.00    O   2   Fe
6.00    F   2   Fe
5.10    O   2   Fe
6.10    F   2   Fe
5.10    O   2   Fe
5.10    F   3   Fe
6.50    O   3   Fe
7.70    F   3   Fe
6.90    O   3   Fe
5.20    F   3   Fe
6.30    O   3   Fe
6.50    L   1   Fe
5.00    L   1   Fe
7.80    L   1   Fe
5.10    L   2   Fe
5.50    L   2   Fe
5.60    L   2   Fe
5.50    L   3   Fe
7.80    L   3   Fe
7.70    L   3   Fe
7.20    F   1   W
8.80    O   1   W
7.80    F   1   W
7.80    O   1   W
7.90    F   1   W
8.10    O   1   W
8.60    F   2   W
7.40    O   2   W
7.40    F   2   W
8.40    O   2   W
7.70    F   2   W
8.90    O   2   W
6.70    F   3   W
6.10    O   3   W
7.50    F   3   W
8.60    O   3   W
7.80    F   3   W
8.60    O   3   W
8.30    L   1   W
8.20    L   1   W
8.70    L   1   W
8.60    L   2   W
6.80    L   2   W
6.30    L   2   W
7.30    L   3   W
7.10    L   3   W
7.70    L   3   W
")

有人可以帮我吗?

【问题讨论】:

  • 您能否添加数据子集以便我们重现该问题?请参阅here 的建议,了解您可能希望如何做到这一点:)
  • 非常感谢 Corinne,希望上表有所帮助?高山
  • Corinne 我刚刚发现它适用于上表,但是当我为变量“hor”添加不同的值时它不起作用。
  • 您可以编辑表格以使其不起作用吗? -- 很难知道hor 是否需要在其他变量的级别内变化才能重现您的问题。
  • 谢谢 Corinne,请在上面找到新表格

标签: r ggplot2 boxplot points


【解决方案1】:

问题在于,当您只应该调用plot 时,您调用了mydata$plot。 ggplot 对象已经有一个预定义的data frame

您可以像这样重写最后几行来修复它:

MioBox +
scale_fill_manual(values=c("#669966", "#CC9966", "#CCCC66"))+
geom_point(position="jitter",aes(color = factor(plot)))

【讨论】:

  • 非常感谢 cimentadaj,我知道异常值的双点。另外,我想用特定的颜色填充箱线图。我的问题是,如果您观察箱线图,对于 9 个箱线图中的每一个,每种颜色应该有 3 个点(根据变量“hor”总共三种颜色)。事实上,大多数时候一种颜色有六个点,另一种颜色有三个,但缺少一种颜色。 @cimentadaj
  • 是的,对不起,我误会了,但我发现了你的错误。您需要从geom_point 调用中删除mydata$。离开plot。我会编辑答案。
  • 您介意点击复选标志接受答案吗?
猜你喜欢
  • 2019-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
相关资源
最近更新 更多