簡體   English   中英

在 R 中重新排序堆積條形圖的條形

[英]Reorder Bars of a Stacked Barchart in R

我發誓我在這里查看了很多問題,試圖找到這個答案,但一直沒能找到它(包括這里這里這里這里,還有更多我現在無法回去找到的問題)。

我認為這是一個非常簡單的問題,但它讓我發瘋。 我有一個數據集

data1  <- structure(list(
Identity = c("Red", "Orange", "Yellow", "Green", "Blue", "Red", "Orange", "Yellow", "Green", "Blue", "Red", "Orange", "Yellow", "Green", "Blue"), 
FavorableLevel = c("Medium", "Medium", "Medium", "Medium", "Medium", "Low", "Low", "Low", "Low", "Low", "High", "High", "High", "High", "High"), 
Value = c(.42, .21, .49, .51, .55, .39, .67, .04, .22, .19, .18, .11, .45, .27, .28)), 
.Names = c("Identity", "FavorableLevel", "Value"), 
row.names = c(NA, -15L), 
class = c("tbl_df", "tbl", "data.frame"))

我正在嘗試制作堆積條形圖,但我希望條形按“高”好感度的值排序。 我可以創建這個圖表:

在此處輸入圖像描述

使用此代碼(顯然標簽等需要清理):

ggplot(data1, 
   aes(fill=factor(FavorableLevel, levels = c("Low","Medium","High")), 
       y=Value, 
       x=Identity)) + 
geom_bar(position="fill", stat="identity")

但是如何重新排序條形圖,以便它們按“高”值升序排序? 我已經以幾種不同的方式嘗試了 fct_reorder,但我可能用錯了。 我還嘗試了上面鏈接的其他各個地方的答案,但還沒有找到我。

一種選擇是通過幫助器Value “列” reorder您的Identity列,您將非High類別的值設置為零並使用FUN=sum

data1$Identity <- reorder(data1$Identity, ifelse(!data1$FavorableLevel %in% "High", 0, data1$Value), FUN = sum)

library(ggplot2)

ggplot(
  data1,
  aes(
    fill = factor(FavorableLevel, levels = c("Low", "Medium", "High")),
    y = Value,
    x = Identity,
  )
) +
  geom_bar(position = "fill", stat = "identity")

暫無
暫無

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

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