2

(我试图让这个问题尽可能简短,因为其他相关的答案对于像我这样的非精明的人来说可能很难。)

考虑到以下代码,是否可以让两个 y 轴处于相同的比例(具有最高 y 限制的图形的比例),并且每个轴都有独立的标签(即 y 轴) ? 我尝试使用facet_wrap但到目前为止还没有成功Layer 1 is missing

library(ggplot2)
library(patchwork)
d <- cars
d$Obs <- c(1:50)
f1 <- function(a) {
  ggplot(data=d, aes_string(x="Obs", y=a)) +
    geom_line() +
    labs(x="Observation",y="Speed/Distance")
}
f1("speed") + f1("dist") 

使用汽车的速度和距离图

4

2 回答 2

3

您可以为您的函数添加两个额外的参数,一个用于轴标签,一个用于您想要的限制。

library(ggplot2)
library(patchwork)
d <- cars
d$Obs <- c(1:50)

f1 <- function(a, y_lab) {
  ggplot(data = d, aes_string(x = "Obs", y = a)) +
    geom_line() +
    scale_y_continuous(limits = range(c(d$speed, d$dist))) +
    labs(x = "Observation", y = y_lab)
}

f1("speed", "Speed") + f1("dist", "Distance")

于 2021-12-16T10:16:00.530 回答
2

从宽到长重塑,然后使用刻面。我们将有分面标签,而不是不同的 y 轴标签:

library(ggplot2)
library(tidyr)

pivot_longer(d, 1:2, names_to = "grp") %>% 
  ggplot(aes(x = Obs, y = value)) +
  geom_line() +
  facet_wrap(vars(grp))

在此处输入图像描述

于 2021-12-16T11:24:53.857 回答