如何设置ggplot2绘图中图例的标题、颜色及刻度断点数量?
解决方案
你提到的两个需求都可以通过调整ggplot的标度函数和引导参数实现,具体修改方法如下:
- 控制
numDEInCat对应的size图例断点:在scale_size()中添加breaks参数,传入你想要展示的数值向量即可,还可以配合limits参数固定图例的数值范围。 - 自定义图例颜色:如果是调整校正p值对应的渐变色,直接修改
scale_color_gradient()的low和high参数值即可;如果是需要调整size图例的点颜色,可以通过guides()函数的override.aes参数覆盖size图例的默认样式。
以下是修改后的完整示例代码:
term <-c("snoRNA binding", "preprophase band", "kinesin complex", "microtubule motor activity", "DNA replication") fc <-runif(5, 1.00, 5.00) padj_BH <-runif(5, 0.001, 0.05) numDEInCat <-runif(5, 30, 300) ggdata <- data.frame(term,fc,padj_BH, numDEInCat) gg1 <- ggplot(ggdata, aes(x = term, y = fc, size = numDEInCat, color = padj_BH)) + expand_limits(y = 1) + geom_point(shape = 16,inherit.aes = T) + # 自定义size图例的断点和范围,示例展示50、150、250三个节点 scale_size(range = c(2.5,12.5), breaks = c(50, 150, 250), limits = c(30, 300)) + # 可自定义p值渐变配色,这里保留你原有的红到蓝配置,也可以自行修改色值 scale_color_gradient(low= "#ff0303", high="#1e00b3")+ xlab('') + ylab('Fold Enrichment') + labs( title = "Gene Ontology all", subtitle = 'BH-adjusted', caption = '', color="Adjusted P-value", size="count") + theme_bw(base_size = 24) + theme( legend.position = 'right', legend.background = element_rect(), plot.title = element_text(angle = 0, size = 16, face = 'bold', vjust = 1), plot.subtitle = element_text(angle = 0, size = 14, face = 'bold', vjust = 1), plot.caption = element_text(angle = 0, size = 12, face = 'bold', vjust = 1), axis.text.x = element_text(angle = 0, size = 12, face = 'bold', hjust = 1.10), axis.text.y = element_text(angle = 0, size = 12, face = 'bold', vjust = 0.5), axis.title = element_text(size = 12, face = 'bold'), axis.title.x = element_text(size = 12, face = 'bold'), axis.title.y = element_text(size = 12, face = 'bold'), axis.line = element_line(colour = 'black'), legend.key = element_blank(), legend.key.size = unit(1, "cm"), legend.text = element_text(size = 14, face = "bold"), title = element_text(size = 14, face = "bold")) + # 可选配置:如果需要把size图例的点统一改为指定颜色,去掉下一行注释即可,色值可自行修改 # guides(size = guide_legend(override.aes = list(color = "#1e00b3"))) + coord_flip() gg1
如果需要更丰富的配色方案,也可以把scale_color_gradient替换为scale_color_viridis_c等ggplot内置的配色标度函数,适配不同的可视化需求。
内容的提问来源于stack exchange,提问作者ktm
相关产品推荐
相关产品推荐

