我在矩陣中顯示了ggplots幾個ggarrange。
ggarrange逐列顯示每個后續繪圖,并在到達最后一列時從新行開始。
我想做的是逐行顯示每個圖,然后在到達最后一行時從新列開始。
這是一個例子
##### Import libraries
library(ggplot2)
library(ggpubr)
##### Initiating objects
set.seed(1)
df <- data.frame(matrix(rnorm(100), 25, 4))
listggplots <- list()
k <- 0
vecColors <- rep(c("#21b78c", "#21a0b7", "#2143b7", "#b521b7"), each=4)
##### Filling list of ggplots
for(i in 1:ncol(df)){
for(j in 1:ncol(df)){
k <- k 1
dfTemp <- df[, c(i, j)]
colnames(dfTemp) <- c("var1", "var2")
listggplots[[k]] <- ggplot(dfTemp, aes(var1, var2))
geom_point(size=10, color=vecColors[k])
scale_x_continuous(name=colnames(df)[i])
scale_y_continuous(name=colnames(df)[j])
theme(legend.position="none", axis.title=element_text(size=12))
}
}
##### Display plots
ggarrange(plotlist=c(listggplots), nrow=4, ncol=4)

我們可以看到,當前顯示圖的矩陣順序是:
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
[4,] 13 14 15 16
我希望每列只有一種 ggplot 顏色。
所以矩陣的順序是:
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 15
[4,] 4 8 12 16
我找到了以下主題,但它是手動配置圖,我想要一些自動的。

uj5u.com熱心網友回復:
rep()這很簡單,只需在函式中切換顏色映射i并j在scale_x/y_continuous()
見下文
library(ggplot2)
library(ggpubr)
##### Initiating objects
set.seed(1)
df <- data.frame(matrix(rnorm(100), 25, 4))
listggplots <- list()
k <- 0
vecColors <- rep(c("#21b78c", "#21a0b7", "#2143b7", "#b521b7"), 4)
##### Filling list of ggplots
for(i in 1:ncol(df)){
for(j in 1:ncol(df)){
k <- k 1
dfTemp <- df[, c(j, i)]
colnames(dfTemp) <- c("var1", "var2")
listggplots[[k]] <- ggplot(dfTemp, aes(var1, var2))
geom_point(size=10, color=vecColors[k])
scale_x_continuous(name=colnames(df)[j])
scale_y_continuous(name=colnames(df)[i])
theme(legend.position="none", axis.title=element_text(size=12))
}
}
##### Display plots
ggarrange(plotlist=c(listggplots), nrow=4, ncol=4)

根據評論更新 ------
如果要保持上述軸順序,則不要更改iandj位置。
##### Import libraries
library(ggplot2)
library(ggpubr)
##### Initiating objects
set.seed(1)
df <- data.frame(matrix(rnorm(100), 25, 4))
listggplots <- list()
k <- 0
vecColors <- rep(c("#21b78c", "#21a0b7", "#2143b7", "#b521b7"), 4)
##### Filling list of ggplots
for(i in 1:ncol(df)){
for(j in 1:ncol(df)){
k <- k 1
dfTemp <- df[, c(i, j)]
colnames(dfTemp) <- c("var1", "var2")
listggplots[[k]] <- ggplot(dfTemp, aes(var1, var2))
geom_point(size=10, color=vecColors[k])
scale_x_continuous(name=colnames(df)[i])
scale_y_continuous(name=colnames(df)[j])
theme(legend.position="none", axis.title=element_text(size=12))
}
}
##### Display plots
ggarrange(plotlist=c(listggplots), nrow=4, ncol=4)

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/531112.html
