我正在寻找一种自动移动 y 轴刻度标签的方法,以便它们在实际绘图区域内左对齐。我喜欢 ggplot 中主题组件的总体灵活性,但在尝试找到通用方法来实现此目的时遇到了困难。
我知道给出负右边距 (*gag*)axis.text.y的组合hjust=0可以实现此效果,但必须手动设置负边距以匹配最长 y 轴刻度标签的宽度。
作为示例,请考虑以下代码:
library(ggplot2)
set.seed(0)
dat <- data.frame(x = 1:100, y = (1:100) + runif(100, -10, 10))
p1 <- ggplot(dat, aes(x, y)) +
geom_line() +
scale_y_continuous("", breaks = c(0, 30, 60, 90),
labels = c(0, 30, 60, "90 units of something")) +
theme(axis.text.y = element_text(hjust = 0,
margin = margin(0, -3.1, 0, 0, 'cm')))
Run Code Online (Sandbox Code Playgroud)
我认为它优雅地将 y 轴标签(例如"units of something")合并到图的主体中,但为了实现它,-3.1必须手动找到最后一行中的 (通过反复试验),这雪上加霜:我不仅使用负边距将文本拉到不想要的地方——我还添加了一些神秘的、脆弱的、硬编码的魔法数字。
有谁知道我可以在哪里找到一个更通用和优雅的解决方案来解决这个问题?