簡體   English   中英

如何使用R和ggplot2創建繪圖矩陣

[英]How to create a matrix of plots with R and ggplot2

我試圖將n個連續的圖表排列成一個單獨的圖表矩陣。 我通過運行for循環得到了第一個地塊,但我無法弄清楚如何將它們安排到“情節圖”中。 我使用了par(mfrow = c(num.row,num.col))但它不起作用。 多胎(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]))
  }
}

我認為繪圖正確地附加到列表中,但我無法以矩陣形式繪制它們。

問題似乎不是你的多個圖,而是如何將變量調用到你的圖中。

您已經將“Survey”放入ggplot作為第一個參數(數據槽)。 在映射參數(第二個插槽)中,您放入aes(...)並在其中指定變量名稱,而不是數據本身。 試試這個:

當你有aes(x = Survey[[i]], fill=brand))在兩個地方,把aes(x = names(Survey[[i]], fill=brand))來代替。

關於繪制多個繪圖, par(mfrow...用於基礎R繪圖,不能用於ggplots。grid.arrange,multiplot和plot_grid應該在你的繪圖中修復錯誤后都能正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM