• R中绘制以特定数值为对称的colorbar


    在绘制figure时,有连续性变量赋值时常常要用colorbar表示值的大小,如果有特殊的界值(如Pvalue<0.05, OR>1),需要将中间值单独设置个颜色作为区分。以我的自建数据集为例。

    当不设置区分时

    1. ggplot(data = dat1,aes(x = Dictionary.element,y = log(OR),color=-log(FDR))) +
    2. geom_point() +
    3. theme_bw()+
    4. geom_hline(yintercept = 1,color="red",linetype="dotted")+
    5. labs(x="Dictionary element",y="OR (95%CI)-log transformed")

    此时无法判断哪个点为有意义。scales包中的scale_color_gradient2可以解决这个问题。 

    1. ggplot(data = dat1,aes(x = Dictionary.element,y = log(OR),color=-log(FDR))) +
    2. geom_point() +
    3. theme_bw()+
    4. geom_hline(yintercept = 1,color="red",linetype="dotted")+
    5. labs(x="Dictionary element",y="OR (95%CI)-log transformed")+
    6. scale_color_gradient2(midpoint = 3, mid = "white",
    7. high = muted("red"), low = muted("blue"),
    8. guide = "colourbar", space = "Lab")

     

     2)方法二,scale_fill_gradientn

    1. ggplot(data = dat1,aes(x = group,y = log(OR),color=-log(FDR))) +
    2. geom_point() +
    3. theme_bw()+
    4. geom_hline(yintercept = 1,color="red",linetype="dotted")+
    5. labs(x="Dictionary element",y="OR (95%CI)-log-
    6. transformed")+scale_color_gradientn(colours = c("blue","white","red"), values =
    7. rescale(c(1,3,15)),guide = "colorbar", limits=c(1,15))

     

     想要设置对称时,可以修改limit和rescale范围,如

    scale_color_gradientn(colours = c("blue","white","red"), values = rescale(c(-9,3,15)),guide = "colorbar", limits=c(-9,15))

     此时为以3位对称的colorbar

     Reference:

    r - asymmetric color distribution in scale_gradient2? - Stack Overflow

  • 相关阅读:
    C# StringBuilder 底层深入原理分析以及使用详解
    MySQL数据库误删回滚
    RustDay05------Exercise[31-40]
    PCS7中如何实现DB块变量的自动上传
    Linux学习-Linux系统及编程基础笔记
    【js&three.js】全景vr看房进阶版
    面试--mysql基础
    JAVA中变量与常量
    学习vue第二天
    微软正在研究使 Linux 脚本更安全
  • 原文地址:https://blog.csdn.net/qq_42458954/article/details/126247032