我正在嘗試使用 ggplot 創建一個堆積條形圖,其中我的 X 軸顯示月份數,Y 軸顯示每個月每個物種的總數。我想創建顯示多年來每月物種數量的堆疊條形圖,因此我會在一個月內擁有與多年來采樣的那個月一樣多的條形圖,請注意我的資料分布不均。
Sp<- data.frame(Species = c("A","A","A","A","A","A","A","A","A","A","A","B","B","B","B","B","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C","C"),
Month= c("2","3","4","4","4","7","3","4","4","5","6","4","5","6","6","7","4","3","4","5","6","7","3","4","4","5","6","4","5","6","4","5","6","2","2","8","5","5"),
Year= c("2018","2005","2006","2006","2006","2006","2008","2008","2008","2008","2018","2009","2009","2009","2018","2009","2009","2009","2009","2009","2018","2005","2005","2005","2006","2006","2005","2006","2005","2005","2005","2009","2009","2009","2018","2018","2018","2018"))
我不太關心顯示年份,但我希望將列從早些時候到下個月(1 月至 12 月)分組在一個圖上,顯示與特定月份一樣多的列,其中包含我整個時間序列的資料。例如,2 月有 2 個列,因為 2 月有 2 個不同年份的資料,而 3 月有 3 個列。
我已經設法使用下面的代碼創建了一個圖,但它使用年份作為一個方面來顯示結果,而不是在一個圖上按重復月份對堆疊的列進行分組。
Sp%>% group_by(Month, Year, Species)%>%
ggplot(aes(Month))
geom_bar(aes(fill= Species),stat='count')
facet_wrap( ~ Year, nrow = 1)
結果(來自我的真實資料,而不是我上面創建的虛擬資料集)

預期的

任何幫助,將不勝感激 :)
謝謝!
uj5u.com熱心網友回復:
一種選擇是切換Month和Year,即按 分面Month。此外,您可以使用主題選項來擺脫刻面外觀,我還選擇了 facet_grid 來使用space="free_x"引數,以便面板的寬度與每個刻面的條數成正比:
library(ggplot2)
ggplot(Sp, aes(Year))
geom_bar(aes(fill= Species), stat='count')
scale_y_continuous(expand = expansion(mult = c(0, .05)))
scale_x_discrete(expand = expansion(add = .8))
facet_grid(.~Month, switch = "x", space = "free_x", scales = "free_x")
theme_bw()
theme(strip.background.x = element_blank(),
strip.placement = "outside",
axis.line = element_line(),
axis.text.x = element_blank(),
axis.ticks.x = element_blank(),
axis.ticks.length.x = unit(0, "pt"),
panel.border = element_blank(),
panel.spacing.x = unit(0, "pt"),
panel.grid.major.x = element_blank())
labs(x = "Month", y = "Count")

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/531110.html
