[英]Is it possible to create overlapping y-axes with a shared x-axis?
我經常有具有相同共享 x 軸但不同 y 軸的圖形。 它們不能分面,因為某些 y 軸需要復雜的名稱和/或由於歷史/解釋原因而翻轉坐標。
下面我繪制了一個這樣的假記錄示例,並展示了在 Inkscape 中對其進行調整后我希望該圖的外觀。 有什么辦法可以從 R/patchwork 中實現這個結果?
library(tidyverse)
library(patchwork)
set.seed(123)
dat <- tibble::tibble(a = 1:10,
b = c(0, 2, 5, 8, 5, 4, 6, 4, 3, 2),
c = -stats::rnorm(10, b, 3),
d = sample(letters[1:3], 10, TRUE))
shared_x <- c(0, 11)
pl1 <- dat %>%
ggplot(aes(x = a, y = b)) +
geom_point(colour = "indianred") +
coord_cartesian(xlim = shared_x) +
scale_y_continuous("B is awesome", position = "right")
pl2 <- dat %>%
ggplot(aes(x = a, y = c)) +
geom_point(colour = "steelblue") +
scale_y_reverse("C is inversely related to B") +
coord_cartesian(xlim = shared_x, ylim = c(3, -13))
theme_set(theme_classic())
(pl1 & theme(axis.title.x = element_blank(), axis.text.x = element_blank(), axis.ticks.x = element_blank(), axis.line.x = element_blank())) / pl2
ggsave("overlapping_axes.pdf", width = 10, height = 8, units = "cm")
我看到 r2evans 已經向您發出了警告,每次人們可能認為輔助軸可以解決您的問題時都應該考慮這些警告。 我同意他們的看法,但是,這並不意味着它不能完成。
只要你能想到一個變換並且它是逆的,你就可以用輔助軸來做到這一點(不要與“你應該這樣做”混淆)。 軸的截斷外觀可以用ggh4x::axis_truncated()
復制(免責聲明,我是該函數的作者)。
在下面的示例中,次軸的轉換為-x * 0.5
因此逆為- x / 0.5
,但您可能可以更好地滿足您的需求。
library(ggplot2)
library(ggh4x)
set.seed(123)
dat <- tibble::tibble(a = 1:10,
b = c(0, 2, 5, 8, 5, 4, 6, 4, 3, 2),
c = -stats::rnorm(10, b, 3),
d = sample(letters[1:3], 10, TRUE))
ggplot(dat, aes(a)) +
geom_point(aes(y = b, colour = "b")) +
geom_point(aes(y = -c * 0.5, colour = "c")) +
scale_y_continuous(
position = "right", breaks = seq(0, 8, by = 2),
guide = guide_axis_truncated(),
name = "B is awesome",
sec.axis = sec_axis(
trans = ~ -.x/0.5, breaks = c(0, -5, -10),
guide = guide_axis_truncated(trunc_lower = -Inf),
name = "C is inversely related to B"
)
) +
scale_colour_manual(values = c("indianred", "steelblue")) +
theme_classic() +
theme(
axis.title.y.left = element_text(colour = "steelblue"),
axis.title.y.right = element_text(colour = "indianred")
)
由reprex 包(v1.0.0) 於 2021 年 7 月 9 日創建
您可以通過設置適當的hjust
更好地重新定位軸標題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.