gpt4 book ai didi

r - 忽略 x 标签对齐与拼凑中的多个图 : is this possible?

转载 作者:行者123 更新时间:2023-12-05 03:52:18 24 4
gpt4 key购买 nike

我真的很喜欢 patchwork 包,多个图的对齐通常比其他包(cowplot/gridextra)更好也更容易实现。

但是,有一件事我无法解决:是否可以在拼凑中忽略 x 轴对齐,而只对齐所有其他元素?还是手动调整拼凑后的这个x轴对齐方式?见附图:如果可能的话,我希望补丁 B 和 C (Petal.Length) 的 x 轴标题更靠近 x 轴。

enter image description here

生成图像的代码:

library(ggplot2)
library(patchwork)

plot.1 <- ggplot(iris, aes(x = Species, y = Petal.Width)) +
geom_boxplot() +
scale_x_discrete(labels = c("A very\nvery\nlong\nlabel", "","")) +
labs(x = element_blank())

plot.2 <- ggplot(iris, aes(x = Petal.Length, y = Petal.Width)) +
geom_point()

(plot.1 |plot.2)/(plot.2|plot.1) +
plot_annotation(tag_levels = "A")

最佳答案

操作示例

library(ggplot2)
library(patchwork)

plot.1 <- ggplot(iris, aes(x = Species, y = Petal.Width)) +
geom_boxplot() +
scale_x_discrete(labels = c("A very\nvery\nlong\nlabel", "","")) +
labs(x = element_blank())

plot.2 <- ggplot(iris, aes(x = Petal.Length, y = Petal.Width)) +
geom_point()

(plot.1 | plot.2) /
(plot.2 | plot.1) +
plot_annotation(tag_levels = "A")

reshow OP figure

使用负边距

我花了一段时间才意识到这个问题源于需要对齐 axis.textaxis.title 的混合。尽管它们在语法上是不同的元素,分类轴文本服务于大多数或所有连续轴标题的实用功能。标题将始终在对齐的文本区域之外以网格对齐。仅凭理由无法解决该问题,但负利润率可以。

注意事项:

  • 您想要的负边距值取决于绘图中的其他比例因子,因此这是最后润色的解决方案之一。 -50 在这种情况下有效,但我需要使用其他值
  • 它也适用于 y 轴
  • 我用括号搞砸了,但除了额外的 theme() 层之外,绘图规范是相同的
  • 您通常不希望在单个绘图定义中包含此负边距主题片段,因为它似乎会导致那里出现错误,并且您将无法迭代地优化边距值这样,如果您的脚本/Rmd 很长和/或很复杂,至少不容易。这确实只是在使用 patchwork 组装图的级别上才存在问题,因此最好的做法可能是在定义拼凑程序集的地方保持这样的抛光调整,如我所示在这里。
(plot.1 | (
plot.2 +
theme(axis.title.x = element_text(margin = margin(t = -50, unit = "pt"))))
) / (
(plot.2 +
theme(axis.title.x = element_text(margin = margin(t = -50, unit = "pt")))) |
plot.1
) +
plot_annotation(tag_levels = "A")

enter image description here

关于r - 忽略 x 标签对齐与拼凑中的多个图 : is this possible?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62304750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com