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

标签 r for-loop matrix ggplot2 plot

我试图将 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/

相关文章:

javascript - 方向不可知的 for 循环,如何在迭代中包含最终值?

c++ - 读取 Matrix txt 文件并存储为数组

matlab - 有没有更快的方法从方阵中删除所有非对角线元素?

r - 在 R 中,如何将数据分配到不同的组中

javascript - 如何在每个 FOR 循环步骤之后运行函数

c - Arduino : multiplexer code not entering for loop

c++ - 重载 ostream 运算符以从文件打印矩阵

css - 使用 rvest 在 Twitter 中抓取用户视频

r - 如何将 lm 对象存储在 R 的数据框中

r - order 函数如何打破 R 中的关系?