R 更改中线ggplot geom_箱线图()的颜色

R 更改中线ggplot geom_箱线图()的颜色,r,ggplot2,boxplot,R,Ggplot2,Boxplot,我使用下面的commond生成两两箱线图。 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.00049

我使用下面的commond生成两两箱线图。 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这里的问题是
geom_segment()
继承了
p
ggplot
对象的美学,该对象的
color
fill
具有离散比例。要避免这种情况,请设置
inherit.aes=FALSE
–就像您在上面的
geom_text()
中所做的那样:

p+geom_段(数据=dat,
aes(x=xmin,xend=xmax,y=middle,yend=middle),
color=“白色”,inherit.aes=F)
请注意,我已经删除了
size=2
,因为这样粗的线在显示中间值时没有多大帮助

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

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