繁体   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