ggplot2 | 连续型变量渐变色图例加黑边

在这里插入图片描述

左侧为原图,右侧有最终效果图。

1 原图代码

library(ggplot2)
g1=ggplot(mtcars, aes(mpg, wt, color=mpg))+geom_point()+
  scale_color_gradient(low="white", high="red")+
  theme_bw(); g1

2. 目标图代码

目前没找到 ggplot2 原生的处理方法。
只能使用ggplot2的低层 grid 包进行拆分处理。该过程不可逆,转为grob对象后,失去ggpot对象的+和回车打印等特性。

主要思路,就是把ggplot2对象拆分成基本的 grob 对象。
然后找到 color bar 所在的分支对象,创建一个等大小的矩形对象。
然后把 color bar 对象和 矩形对象合并成一个grob对象,放回到原来的位置。
然后打印整体 grob 对象。

整个过程需要反复测试,难点是找到 bar 所在图层位置。

library(grid)
# 目测对象的位置
grid.force()
grid.ls()
# bar.4-2-4-2

# 拆开ggplot2对象
q=ggplotGrob(g1)


# 测试1
grid.newpage()
bar=q$grobs[[15]]$grobs[[1]]$grobs[[2]]
grid.draw(bar)
#构建矩形对象
box=rectGrob(width=bar$width, height=bar$height, gp=gpar(col="black", lwd=3))
grid.draw(box)
grid.draw(bar)

# 合并bar+box
gplot <- gTree(
  children = gList(
    box,
    bar
  )
)

# check
grid.newpage()
grid.draw(gplot)


# setting
q$grobs[[15]]$grobs[[1]]$grobs[[2]]=gplot
# draw
grid.newpage()
grid.draw(q)

ref

  • https://www.biomooc.com/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值