簡體   English   中英

ggplot2堆積條形圖堆棧的順序與源數據不同

[英]Order of ggplot2 stacked bar plot stacks not same as source data

我試圖用Rgplot2在R中制作堆積條形圖,但是,我無法重現我在網上找到的先前示例。

樣本數據:

d <- data.frame(year = factor(sample(2010:2014, 400, replace=T)), 
                continent = factor(sample(c("EU", "US", "Asia"), 400, replace=T)), 
                gender = factor(sample(c("male", "female"), 400, replace=T)), 
                amount = sample(20:5000, 400, replace=T))

ggplot代碼:

ggplot(data=d, aes(x=year, y=amount, fill=gender)) + geom_bar(stat="identity")

根據Christoph Herzog博客文章,如果沒有手動訂購源數據,請生成以下圖表:

期望的結果

但是,我在不應用任何訂購的情況下獲得的實際結果是:

實際結果

有沒有人可以向我解釋為什么會這樣? ggplot2是否有變化,我無法找到? 我忽略了什么嗎?


更新:1

我試過通過使用強制訂單,但沒有運氣:

ggplot(data=d, aes(x=year, y=amount, fill=gender, order=as.numeric(row.names(d)))) + 
  geom_bar(stat="identity")

我正在使用ggplot2_2.2.1和R版本3.3.2。


更新:2

以下代碼會產生未排序的結果,但有幾個問題。

  1. 情節僅限於前5000(金額),我不知道為什么。
  2. 嘗試更改y軸顯示> 5000為空白。
  3. 條形圖的布局似乎與目標圖的下限5000不匹配。

ggplot(data=d, aes(x=year, y=amount)) + stat_identity(geom = "bar", aes(fill=gender))

裁剪,未分類


更新:3

在某種程度上,可以使用以下代碼獲得所需的結果:

ggplot(data=d, aes(x=year, y=amount, fill=gender, group = continent)) +
  geom_bar(stat="identity")

但是,您需要對第二個參數進行分組以實現此目的這一事實並不適合我的目標應用程序。 我正在尋找一個完全沒有排序的圖,其中只有行號決定了堆疊順序。

分組情節

根據Q的更新3,OP正在尋找完全未排序的圖,其中只有行號確定堆疊順序

我相信這可以通過實現

ggplot(data=d, aes(x=year, y=amount, fill=gender, group=row.names(d))) + 
  geom_col()

在此輸入圖像描述

OP已經在他的更新3中使用了continent作為group審美。這里, row.names(d)返回的行號或行id用於對數據進行分組。

geom_col()ggplot2版本2.2.0引入的geom_bar(stat="identity")的快捷方式。

請注意,結果可能不同,因為OP省略了set.seed()以可重復地創建樣本數據。

暫無
暫無

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

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