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

9 篇文章 5 订阅

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

当不设置区分时

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

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

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

 

 2)方法二,scale_fill_gradientn

ggplot(data = dat1,aes(x = group,y = log(OR),color=-log(FDR))) +
    geom_point() +
    theme_bw()+
    geom_hline(yintercept = 1,color="red",linetype="dotted")+
    labs(x="Dictionary element",y="OR (95%CI)-log- 
    transformed")+scale_color_gradientn(colours = c("blue","white","red"), values = 
    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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值