【问题标题】:Why does hjust move my labels up and down, and vjust left and right? Isn't that backward?为什么只是上下移动我的标签,而只是左右移动?这不是倒退吗?
【发布时间】:2021-02-03 08:52:29
【问题描述】:

我在 RStudio 中创建了一个图表,这是我的代码的一部分:

theme(
    plot.title = element_text(colour = "#ec008c", family = "Inter", size = 25),
    axis.title.y = element_text(size = 14, family = "Inter", hjust = 0.1),
    axis.text.x = element_text(family = "Inter"),
    axis.text.y = element_text(family = "Inter"),
    plot.subtitle = element_text(family = "Inter")
  )

我知道hjust(即水平对齐)和vjust(即垂直对齐)用于移动标签,我的问题是为什么使用hjust的这段代码会移动y轴标题上下而不是左右?

使用vjust上下移动轴标题对我来说更直观,我的思维过程有什么问题吗?

【问题讨论】:

  • 相对于轴是合理的(0 - 向下或向左,1 - 向上或向右),例如,如果您要旋转图形以使您正在修改的轴位于顶部,它看起来是正确的
  • 是的,我知道必须使用的值介于 0 和 1 之间。不确定旋转图形以使 y 轴位于顶部是什么意思,为什么我必须这样做当 IMO 使用 vjust 上下移动轴标题时,这样做很直观?
  • vjust 确实将标题上下移动相对于轴
  • 啊,对,我现在明白了。这确实更有意义。作为一个新手,将其视为沿 x 轴左右移动(即在屏幕上水平)似乎更直观,但我想最好让它相对于轴本身。刚开始更容易理解。谢谢你的洞察力!!!

标签: r ggplot2


【解决方案1】:

稍微扩展一下 cmets 中的讨论,hjust 参数在理论上与轴无关(虽然在实践中是相对的),但hjust 参数是相对于文本的方向.也许视觉指示器更容易掌握。在下面的示例中,我们针对文本的三个角度重复 hjust = c(0, 0.5, 1),相对于定义文本的 x 和 y 的点。

df <- expand.grid("Test!", hjust = c(0, 0.5, 1), angle = c(0, 45, 90))

grid::grid.newpage()

grid::grid.points(
  x = seq(0.1, 0.9, length.out = nrow(df)),
  y = rep(0.5, nrow(df)),
  pch = 21,
  gp = grid::gpar(col = "red", fill = "red", fontsize = 10),
  default.units = "npc"
)

grid::grid.text(
  x = seq(0.1, 0.9, length.out = nrow(df)),
  df$Var1, hjust = df$hjust, vjust = 0.5, rot = df$angle
)

由reprex package (v1.0.0) 于 2021 年 2 月 3 日创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多