ggplot2中如何实现带背景的label类型注解旋转?
带背景旋转注解实现方案
ggplot2 原生的 geom_label 目前不支持同时旋转文本和对应的背景框,你设置的 angle 参数仅会作用于文本内容,背景框仍保持水平,因此看不到整体旋转的效果。
推荐解决方案:使用ggtext包的geom_richtext
首先安装依赖包(已安装可跳过):
install.packages("ggtext")
修改后的实现代码如下:
library(ggplot2) library(ggtext) fake = data.frame(x=rnorm(100), y=rnorm(100)) ggplot(data = fake, aes(x = x, y = y)) + geom_point() + geom_vline(xintercept = -1, linetype = 2, color = "red") + annotate( geom = "richtext", x = -1, y = -1, label = "Helpful annotation", color = "red", angle = 90, fill = "white", # 设置背景填充色 label.colour = NA # 隐藏标签边框,和原生geom_label默认效果对齐 )
如果需要保留标签边框,将label.colour参数设置为对应的边框颜色即可,比如黑色边框设为label.colour = "black"。
无额外依赖的替代方案
如果不想安装额外扩展包,可以分两层绘制实现:先计算文本尺寸绘制对应旋转角度的矩形作为背景,再叠加旋转的geom_text,但坐标和尺寸计算相对繁琐,更推荐使用上述ggtext方案。
内容的提问来源于stack exchange,提问作者Brian Fisher
相关产品推荐
相关产品推荐

