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

19 篇文章 0 订阅

在这里插入图片描述

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

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/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在R语言中,ggplot2是一个常用的数据可视化包,用于创建高质量的图形。当我们在使用ggplot2绘制图形时,可以通过添图例来解释Y轴的含义。 要在ggplot2中添Y轴图例,可以使用`scale_y_continuous()`函数或`scale_y_discrete()`函数,具体取决于Y轴的数据类。 如果Y轴是连续数据(如数值),可以使用`scale_y_continuous()`函数。该函数可以设置Y轴的标签、标题和图例的位置等属性。例如,以下是一个示例代码: ```R library(ggplot2) # 创建一个示例数据集 data <- data.frame(x = 1:10, y = 1:10, group = c(rep("A", 5), rep("B", 5))) # 绘制散点图,并添Y轴图例 ggplot(data, aes(x, y, color = group)) + geom_point() + scale_y_continuous(name = "Y轴标题", breaks = seq(1, 10, by = 2), labels = c("1", "3", "5", "7", "9"), guide = guide_legend(title = "图例标题")) ``` 如果Y轴是离散数据(如因子),可以使用`scale_y_discrete()`函数。该函数可以设置Y轴的标签、标题和图例的位置等属性。以下是一个示例代码: ```R library(ggplot2) # 创建一个示例数据集 data <- data.frame(x = 1:10, y = factor(1:10), group = c(rep("A", 5), rep("B", 5))) # 绘制柱状图,并添Y轴图例 ggplot(data, aes(x, fill = group)) + geom_bar() + scale_y_discrete(name = "Y轴标题", labels = c("一", "二", "三", "四", "五", "六", "七", "八", "九", "十"), guide = guide_legend(title = "图例标题")) ``` 以上代码中,`scale_y_continuous()`和`scale_y_discrete()`函数分别用于设置连续和离散Y轴的图例。你可以根据自己的数据类选择适合的函数来添Y轴图例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值