ggplot中解决多基因表达图平滑线与数据点被置信区间遮挡的方法
嗨,作为R新手遇到这种图层遮挡的小问题太正常啦!你提的两个解决方案都完全可行,我给你分别调整代码并解释清楚:
方法1:调整图层顺序,让点和线直接置于顶层
ggplot的图层是按代码书写顺序叠加的——先写的图层会被后写的图层覆盖。你原来的代码先画了数据点,再画带置信区间的平滑线,所以置信区间的填充层就盖在点上面了。只需要把geom_smooth移到geom_point前面,就能让点和线稳稳地在置信区间填充的上层:
library(forcats) library(ggplot2) library(tidyr) # 数据整理部分保持不变 tbl_long <- data1 %>% gather(gene, expression, -X) # 调整图层顺序后的绘图代码 tbl_long %>% ggplot(aes(x = fct_inorder(X), y = expression, color = gene, group = gene)) + geom_smooth(aes(fill=gene)) + # 先绘制置信区间填充和平滑线 geom_point() + # 再绘制数据点,确保点在最顶层 theme_classic()
方法2:调淡置信区间的填充颜色
如果不想改动图层顺序,也可以给geom_smooth添加alpha参数来降低填充色的透明度,这样就算填充层在上面,也不会遮挡下面的点和线:
library(forcats) library(ggplot2) library(tidyr) tbl_long <- data1 %>% gather(gene, expression, -X) # 调整填充透明度后的绘图代码 tbl_long %>% ggplot(aes(x = fct_inorder(X), y = expression, color = gene, group = gene)) + geom_point() + geom_smooth(aes(fill=gene), alpha = 0.3) + # alpha取值0-1,数值越小透明度越高 theme_classic()
另外给你个小技巧:如果想让平滑线更突出,还可以给geom_smooth加上size参数调粗线条,比如size=1.2,效果会更好哦!
内容的提问来源于stack exchange,提问作者P_aza
相关产品推荐
相关产品推荐

