簡體   English   中英

為什么在R ggplot2中添加構面時,堆疊條形圖會發生變化

[英]Why does stacked bar plot change when add facet in r ggplot2

我有幾組數據,我想以多面堆積條形圖顯示它們。 數據顯示對調查問題的回答。 當我在數據框中查看它們時,它們是有意義的;而當我繪制它們(不進行分面)時,它們是有意義的。

但是,數據多面時似乎會發生變化。 我以前從未遇到過這個問題。 我能夠用一些虛擬數據重新創建一個更改(不是完全相同的更改)。

myDF <- data.frame(rep(c('aa','ab','ac'), each = 9),
               rep(c('x','y','z'),times = 9),
               rep(c("yes", "no", "maybe"), each=3, times=3),
               sample(50:200, 27, replace=FALSE))
colnames(myDF) <- c('place','program','response','number')
library(dplyr)
myDF2 <- myDF %>%
    group_by(place,program) %>%
    mutate(pct=(100*number)/sum(number))

myDF中的數據基本上是對問題的回答計數。 myDF2僅創建一個百分比的受訪者,每個地點和計划中都有任何特定的響應。

library(ggplot2)
my.plot <-ggplot(myDF2, 
             aes(x=place, y=pct)) +
    geom_bar(aes(fill=myDF$response),stat="identity")

my.plot.facet <-ggplot(myDF2, 
                   aes(x=place, y=pct)) +
    geom_bar(aes(fill=myDF$response),stat="identity")+
    facet_wrap(~program)

我希望看到一個圖,顯示每個“程序”和“位置”中每個“響應”的正確“ pct”。 但是, my.plot.facet每個位置僅顯示一個“響應”。

my.plot和my.plot.facet的示例

數據不是那樣的。 例如, head(myDF2)顯示位置“ x”的程序“ aa”同時具有“是”和“否”。

> head(myDF2)
Source: local data frame [6 x 5]
Groups: place, program

  place program response number      pct
1    aa       x      yes     69 18.35106
2    aa       y      yes     95 25.81522
3    aa       z      yes    192 41.64859
4    aa       x       no    129 34.30851
5    aa       y       no    188 51.08696
6    aa       z       no    162 35.14100

事實證明,訂購在這里很重要。 myDF2不再是數據幀。 這是一個dplyr對象。 這意味着ggplot2確實很掙扎。

如果數據需要由程序處理,則必須先在group_by()調用“程序”

請注意,這里是通過查看反圖構面實現的。

my.plot.facet2 <-ggplot(myDF2, 
                       aes(x=program, y=pct)) +
   geom_bar(aes(fill=myDF2$response),stat="identity")+
   facet_wrap(~place)

生產:

my.plot.facet2

暫無
暫無

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

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