R 更改中线ggplot geom_箱线图()的颜色
我使用下面的commond生成两两箱线图。 ctrp.boxdata看起来像: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
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)