2016-09-28 38 views
-1

我有一個數據框,有496個觀察變量,它們是case,water81,water80,water79,income,education,retire,peop81,cpeop,peop80。現在Iam有興趣創建一個ggplot(退休收入分配)。我還需要在情節的左側創建一個地毯。但是當我嘗試時,地毯被注意在左側和右側創建,但僅在頂部和底部創建。在R中使用ggplot創建地毯

ggplot(data=dataframe,aes(x=income,fill=retire))+ 
    geom_histogram()+geom_rug(sides="t",color="red") 

當sides =「b」或「t」地毯被創建時。如果我使用地毯=「l」或「r」地毯沒有創建。

enter image description here

回答

2

哪裏會想到該系統把地毯痕跡例圖的y軸?而且,同樣重要的是:你會如何解讀它們?地毯標記不適用於這種數據顯示。

提供您的代碼將幫助重複的例子,但即使沒有它,我可以告訴你沒有映射y變量,它geom_rug需要做出y軸地毯的痕跡。

如果您堅持這樣做,您需要手動生成y軸位置,然後將它們傳遞到ggplot。 (請注意,我用的管道從magrittr構建數據)

toPlot <- 
    mpg %$% 
    table(class, cyl) %>% 
    as.data.frame() 

ggplot(toPlot 
     , aes(x = class 
      , fill = cyl 
      , col = cyl 
      , y = Freq)) + 
    geom_bar(stat = "identity" 
      , position = "dodge") + 
    geom_rug() 

enter image description here

注意,我躲着吧。否則,您的地毯標記可能會a)與酒吧不一致,或者b)沒有酒吧不能解釋。

下面是使用的例子的數值變量,使用cut把它分解成像一個柱狀圖箱:

toPlotNum <- 
    mpg %$% 
    table(class 
     , City = cut(cty,pretty(cty))) %>% 
    as.data.frame() 

ggplot(toPlotNum 
     , aes(x = City 
      , fill = class 
      , col = class 
      , y = Freq)) + 
    geom_bar(stat = "identity" 
      , position = "dodge") + 
    geom_rug() 

或者,顯示密度,而不是:

library(stringr) 

ggplot(mpg 
     , aes(x = cty 
      , col = word(trans, sep = fixed("(")))) + 
    geom_density() + 
    geom_rug() 

enter image description here

+0

我有在問題中列出的10個變量的數據集。因此,退休專欄由「是」或「否」選項組成,收入欄包含數字中的詳細收入值。我需要在收入和退休之間繪製一張ggplot2 ...你能幫忙嗎?我也想知道什麼時候應該使用geom_histogram,geom_point或geom_bar。 –

+0

我添加了一個帶有數字變量的版本(只需添加'cut')。我的答案是什麼*不*告訴你如何添加這些地毯標記?如果你有一個看起來像你試圖創建的情節的例子,這可能會有所幫助。 'geom_histogram'本質上是'geom_bar'的一個包裝器,它可以爲你裝箱。 'geom_point'用於完全不同類型的數據。你在這個情節中試圖傳達什麼?如果您只是想比較分佈,請參閱我的'geom_density'示例作爲潛在替代方案。 –