带有 marrangeGrob 的 ggplot 列表,错误地绘制相同的
list of ggplot with marrangeGrob, wrongly plot the same
我正在与 marrangeGrob 作斗争。我需要在多个页面上绘制许多(许多)直方图。我的代码逻辑可以用鸢尾花数据集来写。
library(ggplot)
library(gridExtra)
num_columns=5
num_rows=5
num_pages=3
val=num_columns*num_rows*num_pages
vplots=list()
for(i in 1:val){
aname=sample(colnames(iris)[1:4],1) # randomly pick a column name
vals=sample(iris[,aname], 50, replace=TRUE) # with that column, pick 50 random values
a_hist=ggplot(mapping=aes(vals)) + geom_histogram() + xlab(aname) #plotting the histogram
vplots[[i]]=a_hist # store the plot in the list
fn=paste0("single_plot_",i,".png")
ggsave(a_hist, filename =fn)
}
ggsave("arrange5x5.pdf", marrangeGrob(grobs=vplots, nrow=5, ncol=5), width = 15, height=15)
我遇到的问题如下。每个直方图都略有不同,从 "single_plot_N.png" 可以看出。当我尝试通过使用 marrageGrob 将所有这些图放在同一个文件中时,所有直方图都是相同的。我做错了什么?
直方图 1:
直方图 2:
一个文件上的多个图,所有直方图都相同(为什么?):
您需要在 ggplot
中定义 data
对象,即用于绘图的数据集:
set.seed(1)
num_columns=2
num_rows=2
num_pages=1
val=num_columns*num_rows*num_pages
vplots=list()
for(i in 1:val) {
aname=sample(colnames(iris)[1:4],1) # randomly pick a column name
vals=sample(iris[,aname], 50, replace=TRUE) # with that column, pick 50 random values
# Generate a data frame for ggplot
df <- data.frame(vals=vals)
# Input the dataset to use for plot
a_hist=ggplot(mapping=aes(vals), data=df) + geom_histogram() + xlab(aname) #plotting the histogram
vplots[[i]]=a_hist
}
grid.arrange(grobs=vplots, ncol=2)
我正在与 marrangeGrob 作斗争。我需要在多个页面上绘制许多(许多)直方图。我的代码逻辑可以用鸢尾花数据集来写。
library(ggplot)
library(gridExtra)
num_columns=5
num_rows=5
num_pages=3
val=num_columns*num_rows*num_pages
vplots=list()
for(i in 1:val){
aname=sample(colnames(iris)[1:4],1) # randomly pick a column name
vals=sample(iris[,aname], 50, replace=TRUE) # with that column, pick 50 random values
a_hist=ggplot(mapping=aes(vals)) + geom_histogram() + xlab(aname) #plotting the histogram
vplots[[i]]=a_hist # store the plot in the list
fn=paste0("single_plot_",i,".png")
ggsave(a_hist, filename =fn)
}
ggsave("arrange5x5.pdf", marrangeGrob(grobs=vplots, nrow=5, ncol=5), width = 15, height=15)
我遇到的问题如下。每个直方图都略有不同,从 "single_plot_N.png" 可以看出。当我尝试通过使用 marrageGrob 将所有这些图放在同一个文件中时,所有直方图都是相同的。我做错了什么?
直方图 1:
您需要在 ggplot
中定义 data
对象,即用于绘图的数据集:
set.seed(1)
num_columns=2
num_rows=2
num_pages=1
val=num_columns*num_rows*num_pages
vplots=list()
for(i in 1:val) {
aname=sample(colnames(iris)[1:4],1) # randomly pick a column name
vals=sample(iris[,aname], 50, replace=TRUE) # with that column, pick 50 random values
# Generate a data frame for ggplot
df <- data.frame(vals=vals)
# Input the dataset to use for plot
a_hist=ggplot(mapping=aes(vals), data=df) + geom_histogram() + xlab(aname) #plotting the histogram
vplots[[i]]=a_hist
}
grid.arrange(grobs=vplots, ncol=2)