是否可以向 ggplot2 添加第三个 y 轴?

sop*_*oph 2 r ggplot2

是否有可能使用 ggplot2 将第三个 y 轴添加到绘图中?我想在图中显示三个不同的数据源。我已经添加了第二个 y 轴,对于下一个数据集,比例再次非常不同,这就是为什么我现在正在寻找解决方案。

到目前为止,我只找到了如何添加第二个轴,例如[此处]所示。(https://r-graph-gallery.com/line-chart-dual-Y-axis-ggplot2.html)但我是否有可能添加另一个...谢谢!

All*_*ron 7

这同样笨重,但展示了如何仅使用 CRAN 资源从头开始完成。

library(cowplot)
library(patchwork)

p1 <- ggplot(df, aes(Sepal.Width, Sepal.Length)) + 
                   geom_point() + theme(axis.line = element_line())
p2 <- ggplot(df, aes(Sepal.Width, Petal.Width)) + geom_point() +
                   theme(axis.line = element_line())

p3 <- ggplot(df, aes(Sepal.Width, Petal.Length)) + 
  geom_point(aes(color = "Petal.Length")) +
  geom_point(aes(y = Sepal.Length/100, color = "Sepal.Length")) +
  geom_point(aes(y = Petal.Width / 1000, color = "Petal.Width")) +
  theme(axis.line = element_line(),
        plot.margin = margin(10, 10, 10, 30))

wrap_elements(get_plot_component(p1, "ylab-l")) +
  wrap_elements(get_y_axis(p1)) +
  wrap_elements(get_plot_component(p2, "ylab-l")) +
  wrap_elements(get_y_axis(p2)) +
  p3 + 
  plot_layout(widths = c(3, 1, 3, 1, 40))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


使用的数据

df <- iris
df$Sepal.Length <- df$Sepal.Length * 100
df$Petal.Width <- df$Petal.Width * 1000
Run Code Online (Sandbox Code Playgroud)

  • 很不错!根据点的颜色为轴着色的额外功劳:-) (2认同)
  • “如果某件事不值得做,就不值得做好!” - 我认为你在这里做得很好;) (2认同)