【问题标题】:Set y axis label position ggplot2设置y轴标签位置ggplot2
【发布时间】:2015-11-20 19:14:08
【问题描述】:

我正在寻找使用 ggplot2 的图形帮助。 我正在针对同一个变量 C 绘制不同的变量(A 和 B)。变量 A 的值从 -20 到 20,而变量 B 的值从 -2 到 2。使用 ggplot2 时,y 轴标签更远变量 A 比变量 B 远离轴线,因为 20 比 2 占用更多空间,并且标签与数字的距离相同。

我希望两者的距离相同。是否可以定义轴标签和线之间的距离?

我尝试过使用 theme(axis.title.y = element_text(vjust=) ) 但这使得设置距离变得非常困难。

我还尝试在我的 yaxis 标题后添加“\n”,如此处 (https://groups.google.com/forum/#!topic/ggplot2/mK9DR3dKIBU) 建议的那样,但这也不能解决我的问题。

使用 PlantGrowth 数据的示例:

  bp <- ggplot(PlantGrowth, aes(x=group, y=weight)) +
        geom_boxplot()+
        theme_classic(base_size=16) +
        ylim(c(3,7))+
        coord_fixed(ratio=(3)/(4))

bp1000 <- ggplot(PlantGrowth, aes(x=group, y=weight*1000)) +
        geom_boxplot()+
        theme_classic(base_size=16) +
        ylim(c(3000,7000))+
        coord_fixed(ratio=(3)/(4000))

您会看到 bp1000 的 y 轴标签(“权重”)比 bp 更远离轴,即使使用 coord_fixed() 很容易保持绘图区域相同。

如何定义 bp 的 ylabel 的距离应该与 bp1000 的距离相同(即更长)。

【问题讨论】:

  • 举个例子。使它成为一个易于重现的最小示例。您可以使用您的真实数据(与dput() 共享)、模拟数据或最简单的选择,内置数据(可能是mtcars,与hpmpg 对比wt)。显示您尝试过的代码,然后我们可以帮助您解决问题并找到有效的代码。
  • 如果您尝试对齐两个不同的图(这是我从问题中推断出来的),请尝试在此处搜索 rbind_gtable 示例,它将解决对齐问题。
  • 其他可能性是使用facet_wrap 可能与scales='free_y' 设置。
  • @baptiste 我查找了 rbind_gtable ,这大约是我想要做的,除了我想独立创建绘图并保存为独立的 jpg 文件,然后我最终可以手动对齐。在 rbind_gtable 中,两个 y.labels 与 y.axis 的距离相同,我想自己设置这个距离。这是可能的还是只有当你将图绑定在一起时?
  • 我相信这个answer 应该适合你

标签: r plot ggplot2


【解决方案1】:

您可以手动将宽度设置为物理单位(本例中为一英寸,为夸张)

g1 <- ggplotGrob(bp)
g2 <- ggplotGrob(bp1000)
g1$widths[3] <- g2$widths[3] <- list(unit(1,"in"))
grid.newpage()
grid.arrange(g1, g2)

【讨论】:

  • 谢谢。这正是我的目的!有没有关于 grob 类的不同含义的好文档?
  • 不是真的,但是看看 herethere 了解松散相关的 gtable 内容
猜你喜欢
  • 1970-01-01
  • 2022-01-18
  • 2021-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-21
  • 2023-03-24
  • 2023-03-03
相关资源
最近更新 更多