我试图将 n 个连续的地块排列成一个单一的地块矩阵。我通过运行 for 循环首先获得了这些图,但我不知道如何将它们排列成一个“图的图”。我使用过 par(mfrow=c(num.row,num.col)) 但它不起作用。还有 multiplot(plotlist = p, cols = 4) 和 plot_grid(plotlist = p)
#import dataset
Survey<-read_excel('datasets/Survey_Key_and_Complete_Responses_excel.xlsx',
sheet = 2)
#Investigate how the dataset looks like
glimpse(Survey)#library dplyr
#change data types
Survey$brand <- as.factor(Survey$brand)
Survey$zipcode <- as.factor(Survey$zipcode)
Survey$elevel <- as.factor(Survey$elevel)
Survey$car <- as.numeric(Survey$car)
#Relation brand-variables
p = list()
for(i in 1:ncol(Survey)) {
if ((names(Survey[i])) == "brand"){
p[[i]]<-ggplot(Survey, aes(x = brand)) + geom_bar() +
labs(x="Brand")
} else if (is.numeric(Survey[[i]]) == "TRUE"){
p[[i]]<-ggplot(Survey, aes(x = Survey[[i]], fill=brand)) + geom_histogram() +
labs(x=colnames(Survey[i]))
} else {
p[[i]]<-ggplot(Survey, aes(x = Survey[[i]], fill = brand)) + geom_bar() +
labs(x=colnames(Survey[i]))
}
}
我认为图已正确附加到列表中,但我无法以矩阵形式绘制它们。
最佳答案
问题似乎不在于您的多个绘图,而在于您如何将变量调用到绘图中。
您已经将“调查”作为第一个参数(数据槽)放入 ggplot。在映射参数(第二个槽)中,您输入 aes(...) 并且在里面您应该指定变量名称,而不是数据本身。所以试试这个:
哪里有aes(x = Survey[[i]], fill=brand))
在两个地方,
放aes(x = names(Survey[[i]], fill=brand))
反而。
关于绘制多个图,par(mfrow...
用于基础 R 图,不能用于 ggplots。一旦您修复了图中的错误,grid.arrange、multiplot 和 plot_grid 都应该可以工作。
关于r - 如何使用 R 和 ggplot2 创建绘图矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54744345/