更改中线ggplot geom_boxplot()的颜色

时间:2020-10-10 02:51:04

标签: r ggplot2 boxplot

我使用以下公共域生成成对箱线图。 ctrp.boxdata看起来像:

        drug       auc            p    group
1 paclitaxel 0.2077276 0.0004955335 High PPS
2 paclitaxel 0.1772445 0.0004955335 High PPS
3 paclitaxel 0.1599633 0.0004955335 High PPS
4 paclitaxel 0.1564113 0.0004955335 High PPS
5 paclitaxel 0.1737403 0.0004955335 High PPS
6 paclitaxel 0.2429842 0.0004955335 High PPS
...
           drug       auc            p   group
139 clofarabine 0.4589299 0.0002743925 Low PPS
140 clofarabine 0.3600058 0.0002743925 Low PPS
141 clofarabine 0.4433972 0.0002743925 Low PPS
142 clofarabine 0.3785587 0.0002743925 Low PPS
143 clofarabine 0.3744288 0.0002743925 Low PPS
144 clofarabine 0.3954452 0.0002743925 Low PPS
p <- ggplot(ctrp.boxdata, aes(drug, auc, fill=group)) + 
  geom_boxplot(aes(col = group),outlier.shape = NA) + 
  geom_text(aes(drug, y=min(ctrp.boxdata$auc) * 1.1, 
                label=paste("p = ",formatC(p,format = "e",digits = 1))),
            data=ctrp.boxdata, 
            inherit.aes=F) + 
  scale_fill_manual(values = c("#0772B9","#48C8EF")) + 
  scale_color_manual(values = c("#0772B9","#48C8EF")) + 
  xlab(NULL) + ylab("Estimated AUC value")

我想更改中间线的颜色,我遵循了thread

dat <- ggplot_build(p)$data[[1]]
p + geom_segment(data=dat, aes(x=xmin, xend=xmax, y=middle, yend=middle), color="white", size=2)

但它给了我一个错误:

错误:连续值提供给离散刻度

有解决方案吗?

1 个答案:

答案 0 :(得分:2)

这里的问题是geom_segment()继承了ggplotp对象的美学,该对象对colorfill具有离散的比例。为了避免这种情况,请像上面inherit.aes = FALSE一样设置geom_text()

p + geom_segment(data = dat, 
                 aes(x = xmin, xend = xmax, y = middle, yend = middle), 
                 color = "white", inherit.aes = F)

请注意,我删除了size = 2,因为当您要显示中位数时,这种粗线并不是很有用。

使用您提供的数据,结果如下:

enter image description here