簡體   English   中英

如何使用 R 制作前 3 個情節堆疊的條形圖?

[英]How can I make a top 3 plotly stacked bar graph using R?

我喜歡這個圖書館,但我肯定不是最好的! 我正在嘗試使用 R Studio 中的plotly庫繪制一個簡單的堆積條形圖。

這是我的示例數據:

structure(list(parent = c("Sam", "Elena", "Sam", "Jhon", "Raul", 
"Sam", "Jhon", "Sara", "Paul", "Chris"), cost = c(4, 1, 2, 4, 
1, 2, 4, 3, 5, 6), topic = c("Banana", "Banana", "Berries", "Apple", 
"Watermelon", "Banana", "Berries", "Avocado", "Watermelon", "Pinneaple"
)), row.names = c(NA, -10L), class = "data.frame")

這就是我試圖繪制它的方式:

# Color setting
ramp2 <- colorRamp(c("deepskyblue4", "white"))
ramp.list2 <- rgb( ramp2(seq(0, 1, length = 15)), max = 255)

plot_ly(sample %>%
          top_n(3, `cost`), x = ~parent, y = ~cost, type = 'bar', color = ~topic ) %>%
  layout(yaxis = list(title = 'Cost'), barmode = 'stack') %>%
  add_trace(y = ~topic) %>%
  layout(colorway = ramp.list2) %>%
  config(displayModeBar = FALSE)

但是肯定有一些東西是舊的,因為:

y 軸給了我主題和數字,所以我對此感到非常困惑。

Legend 每個主題都顯示不止一次。

不只繪制基於成本總和的前 3 個。

顯示的顏色與我嘗試使用的顏色完全不同。

此鏈接中的堆積條形圖並沒有真正讓我繼續了解如何按照我想要的方式繪制此圖。 我只想要 3 個酒吧; 一個給 Sam - 39000(除以兩種顏色,因為他有 3 個主題,但 2 個是相同的,我希望線條顯示分離香蕉顏色以使其看起來因為涉及兩個成本),另一個給 Jhon - 30000(除以兩種顏色)和最后一個為保羅 - 19000。也希望不重復顯示的圖例。

這是我用該代碼得到的情節:

陰謀

您可能會出現錯誤,因為您嘗試添加add_trace(y = ~topic) ,這在您指定barmode = 'stack'時不需要。 我不太確定你最終想要的情節(top3 與否),但如果你從以下開始,它應該會讓你開始:

library(plotly)
library(dplyr)

ramp2 <- colorRamp(c("deepskyblue4", "white"))
ramp.list2 <- rgb( ramp2(seq(0, 1, length = 15)), max = 255)
plot_ly(sample ,
x = ~parent, y = ~cost, type = 'bar', color = ~topic ) %>%
  layout(list(title = 'Cost'), barmode = 'stack') %>%
  layout(colorway = ramp.list2) %>%
  config(displayModeBar = FALSE)

在此處輸入圖片說明

暫無
暫無

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

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