如何结合散点图以形成具有共同X轴(对于不同的Y轴)的散点图矩阵?

时间:2020-09-23 03:17:50

标签: r ggplot2 scatter-plot scatter-matrix

我的情节看起来像这样

enter image description here

这是我尝试过的。我制作了散点图,并将它们与grid.arrange组合在一起。

data(methylmercurydata) 
p1 <- ggplot(data=methylmercurydata,aes(x=MeHg, y=logTHg)) + geom_point()
p2 <- ggplot(data=methylmercurydata,aes(x=MeHg, y=OM)) + geom_point()
p3 <- ggplot(data=methylmercurydata,aes(x=MeHg, y=FeRB)) + geom_point()
grid.arrange(p1,p2,p3)

2 个答案:

答案 0 :(得分:1)

最简单的方法可能是在创建更长的表后使用dplyr::facet_wrap()

类似的东西:

library(tidyverse)

methylmercurydata %>%
    pivot_longer(cols = c(logTHg, OM, FeRB), names_to = 'metric') %>%
    ggplot() +
    geom_point(aes(MeHG, value)) +
    facet_wrap(~metric)

编辑:r2evans很好。如果您需要在y上分别设置刻度,则可以在scales = 'free_y'调用中使用facet_wrap。同样,scales = 'free_x'将提供不同的x轴,scales = 'free'将为每个轴提供不同的比例。重新创建上述图时要考虑的另一件事是也指定ncol参数,在这种情况下为ncol = 1

答案 1 :(得分:1)

我不清楚您所说的“散点图矩阵”是什么意思,但是如果您要建立相关矩阵,则可以使用ggforce(例如,按https://ihaddadenfodil.com/post/it-s-a-bird-it-s-a-plane-it-s-a-ggforce-function/):

library(tidyverse)
library(ggforce)
library(palmerpenguins)

ggplot(penguins, aes(col = sex)) +
  geom_autopoint(na.rm = TRUE) +
  facet_matrix(rows = vars(bill_length_mm:body_mass_g),
               switch = "x")

example plot