Leo*_*son 5 r alignment ggplot2 patchwork
我真的很喜欢 patchwork 包,多个图的对齐通常比其他包(cowplot/gridextra)更好、更容易实现。
然而,有一件事我无法解决:是否可以忽略拼凑物中的 x 轴对齐,而只对齐所有其他元素?或者手动调整拼凑后的x轴对齐方式?参见附图:如果可能的话,我希望补丁 B 和 C (Petal.Length) 的 x 轴标题更接近 x 轴。
生成图像的代码:
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")
Run Code Online (Sandbox Code Playgroud)
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")
Run Code Online (Sandbox Code Playgroud)
我花了一段时间才意识到这个问题源于需要对齐axis.texts 和axis.titles 的混合。尽管它们在语法上是不同的元素,但分类轴文本提供了连续轴标题的大部分或全部实用功能。标题将始终在对齐的文本区域之外进行网格对齐。仅靠理由并不能解决这个问题,但负边距可以。
笔记:
-50在这种情况下有效,但我需要使用其他值theme()层之外,绘图规范是相同的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")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2266 次 |
| 最近记录: |