如何使用R和ggplot2创建绘图矩阵

如何使用R和ggplot2创建绘图矩阵,r,for-loop,matrix,ggplot2,plot,R,For Loop,Matrix,Ggplot2,Plot,我试图将n个连续的绘图排列成一个单一的绘图矩阵。我首先通过运行for循环来获得这些图,但我不知道如何将它们排列成“图中图”。我使用了par(mfrow=c(num.row,num.col)),但它不起作用。还包括多点打印(plotlist=p,cols=4)和绘图网格(plotlist=p) 导入数据集 调查问题似乎不在于多个绘图,而在于如何将变量调用到绘图中 您已经将“Survey”作为第一个参数(数据槽)放入ggplot中。在映射参数(第二个槽)中,您将aes(…)放入其中,并在其中指定变量

我试图将n个连续的绘图排列成一个单一的绘图矩阵。我首先通过运行for循环来获得这些图,但我不知道如何将它们排列成“图中图”。我使用了par(mfrow=c(num.row,num.col)),但它不起作用。还包括多点打印(plotlist=p,cols=4)和绘图网格(plotlist=p)

导入数据集
调查问题似乎不在于多个绘图,而在于如何将变量调用到绘图中

您已经将“Survey”作为第一个参数(数据槽)放入ggplot中。在映射参数(第二个槽)中,您将aes(…)放入其中,并在其中指定变量名,而不是数据本身。所以试试这个:

如果您在两个地方有
aes(x=Survey[[i]],fill=brand))
, 放置
aes(x=姓名(调查[[i]],填充=品牌))


关于绘制多个绘图,
par(mfrow…
用于基本R绘图,不能用于ggplots。一旦修复绘图中的错误,grid.arrange、multiplot和plot\u grid都应该工作。

Hi,我认为
ggarrange()
ggpubr
软件包中的函数可能对您有用。它可以轻松地在网格中排列绘图。您好@Knak,感谢您的评论。我尝试调用ggarrange(plotlist=p)并得到以下错误:“错误:StatBin需要一个连续的x变量:x变量是离散的。您可能需要stat=“count”“?”。谢谢:)那么当你使用plot_grid时会发生什么呢?/@ArthurYip我得到与上面相同的错误。Thanks@Marc如果解决了您的问题,请接受解决方案,谢谢!
#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]))
  }
}