如何快速绘制 tibble 的一列与所有其他列的对比图?

How do I graph one column of a tibble versus all other columns quickly?

我有一个小标题,其中包含年份列和其他列中的其他几个变量。我想使用 ggplot2 随着时间的推移创建一些图,其中所有其他列都根据时间绘制。有没有一种方法可以轻松完成此操作而无需手动创建所有绘图?下面是一些示例代码:

library(tidyverse)
library(gridExtra)

temp <- tibble(
  num = 1:10,
  v = num +num ^ 2,
  w = num ^ 2,
  z = num  + 3
)

temp

p1 <- ggplot(temp, aes(x = num, y = v)) +
  geom_point() + labs(y = "v")

p2 <- ggplot(temp, aes(x = num, y = w)) +
  geom_point() + labs(y = "w")

p3 <- ggplot(temp, aes(x = num, y = z)) +
  geom_point() + labs(y = "z")

grid.arrange(p1, p2, p3, nrow = 2, ncol = 2)

在我探索数据和改变周围事物时,我实际使用的 tibble 有 5 到 15 列。

那么有没有一种不用单独创建绘图的快速方法呢?

setdiff(names(temp), "num") %>% 
  map(~ ggplot(temp, aes_string("num", .x)) + 
     geom_point() + labs(y=.x)) %>% 
  grid.arrange(grobs=., ncol=3)
temp %>%
  tidyr::gather(variable, value, -num) %>%
  ggplot(aes(num, value)) + 
  geom_point() + 
  facet_wrap(~variable, ncol = 2, nrow = 2)

您可以使用包 GGally 进行探索性数据分析。

library(GGally)
ggpairs(data = temp)