如何在不使用 R 中的 GGally 的情况下绘制矩阵列数据的所有组合?
How to plot all combinations of matrix column data without using GGally in R?
我有一个包含 4 个物种的物种矩阵。我想在不使用 ggpairs 的情况下在 ggplot2 中绘制它们的丰度。我不确定如何最好地将它转换成一个数据集,可以用 facet_wrap 为每个物种对绘制数据集,除了它本身(总共 6 个图)和线性回归拟合。我也不知道我将如何标记每一行的轴,因为它们都是不同的(Plot 1:: x = sp.1, y = sp.2; Plot2 x = sp.2, y = sp.3)
#Data-Set
sp1 <- rnorm(72, mean = 4, 1)
sp2 <- rnorm(72, mean = 2, 1)
sp3 <- rnorm(72, mean = 3, 1)
sp4 <- rnorm(72, mean = 9, 1)
sp.abd <- data.frame(sp1, sp2, sp3, sp4)
这是一种使用 tidyr::pivot_longer 和 dplyr::left_join 重塑数据并配对变量的方法。
library(tidyverse)
sp.abd %>%
pivot_longer(everything()) %>%
mutate(dummy = 1) -> sp.abd.long
sp.abd.long %>%
left_join(sp.abd.long, by = "dummy") %>%
filter(name.x != name.y) %>%
ggplot(aes(value.x, value.y)) +
geom_point(size = 0.1) +
geom_smooth(method = "lm", se = FALSE) +
facet_grid(name.x ~ name.y)
或者,只获得六个主要比较,没有空白方面:
sp.abd.long %>%
left_join(sp.abd.long, by = "dummy") %>%
filter(name.x < name.y) %>%
mutate(label = paste(name.x, "vs.", name.y)) %>%
ggplot(aes(value.x, value.y)) +
geom_point(size = 0.1) +
geom_smooth(method = "lm", se = FALSE) +
facet_wrap(~label)
我有一个包含 4 个物种的物种矩阵。我想在不使用 ggpairs 的情况下在 ggplot2 中绘制它们的丰度。我不确定如何最好地将它转换成一个数据集,可以用 facet_wrap 为每个物种对绘制数据集,除了它本身(总共 6 个图)和线性回归拟合。我也不知道我将如何标记每一行的轴,因为它们都是不同的(Plot 1:: x = sp.1, y = sp.2; Plot2 x = sp.2, y = sp.3)
#Data-Set
sp1 <- rnorm(72, mean = 4, 1)
sp2 <- rnorm(72, mean = 2, 1)
sp3 <- rnorm(72, mean = 3, 1)
sp4 <- rnorm(72, mean = 9, 1)
sp.abd <- data.frame(sp1, sp2, sp3, sp4)
这是一种使用 tidyr::pivot_longer 和 dplyr::left_join 重塑数据并配对变量的方法。
library(tidyverse)
sp.abd %>%
pivot_longer(everything()) %>%
mutate(dummy = 1) -> sp.abd.long
sp.abd.long %>%
left_join(sp.abd.long, by = "dummy") %>%
filter(name.x != name.y) %>%
ggplot(aes(value.x, value.y)) +
geom_point(size = 0.1) +
geom_smooth(method = "lm", se = FALSE) +
facet_grid(name.x ~ name.y)
或者,只获得六个主要比较,没有空白方面:
sp.abd.long %>%
left_join(sp.abd.long, by = "dummy") %>%
filter(name.x < name.y) %>%
mutate(label = paste(name.x, "vs.", name.y)) %>%
ggplot(aes(value.x, value.y)) +
geom_point(size = 0.1) +
geom_smooth(method = "lm", se = FALSE) +
facet_wrap(~label)