繁体   English   中英

超过 100 个类别的堆积条形图

[英]plotly stacked bar chart with over 100 categories

我有一个包含 100 多个类别的数据集。 如果我要绘制它,我必须为它编写 100 多行代码。 以下是来自 plotly 官网的示例:

library(plotly)
Animals <- c("giraffes", "orangutans", "monkeys")
SF_Zoo <- c(20, 14, 23)
LA_Zoo <- c(12, 18, 29)
data <- data.frame(Animals, SF_Zoo, LA_Zoo)
p <- plot_ly(data, x = ~Animals, y = ~SF_Zoo, type = 'bar', name = 'SF Zoo') %>%
add_trace(y = ~LA_Zoo, name = 'LA Zoo') %>%
layout(yaxis = list(title = 'Count'), barmode = 'stack')

如您所见,如果要绘制超过 100 个动物园,则需要编写add_trace超过 100 次,这是低效的。 有谁知道简化它的方法? 我尝试使用for循环,但失败了。

或者如果有人知道如何使用 ggplotly 将 ggplot 转换为交互式格式,它也将解决我的问题。 ggplot 生成的图是一个堆叠的分组条形图,其中 x 轴有 10 个facet_grid ,每个网格中有大约 100 个类别。 我尝试直接使用 ggplotly 并将其另存为.html ,但是情节的比例非常奇怪。 它应该看起来像一个宽约 40、高约 8 的矩形,但在html ,它只是显示为一个无法阅读的正方形。

您可以融化数据,然后将它们绘制如下:

library(data.table)  
library(plotly)

data.table::melt(data, id.vars='Animals') %>%
plot_ly(x = ~Animals, y = ~value, type = 'bar', 
                name = ~variable, color = ~variable) %>%
      layout(yaxis = list(title = 'Count'), barmode = 'stack')

这将绘制:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM