具有 100 多个类别的堆积条形图
Posted
技术标签:
【中文标题】具有 100 多个类别的堆积条形图【英文标题】:plotly stacked bar chart with over 100 categories 【发布时间】:2017-12-09 08:04:49 【问题描述】:我有一个包含 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
中,它只是显示为一个不可读的正方形。
【问题讨论】:
听起来您需要将数据集重塑为长格式。 This 是我找到的最接近 plotly 的问题,但是关于这个主题有很多 ggplot2 问题和答案。 @aosmith 谢谢;)。但这不是我想要的。 你是说你不想重塑你的数据集吗?然后,您可能会澄清您的问题,包括添加 ggplot2 代码,该代码使您想要在 plotly 中重现您想要的情节。 请告诉我们您在寻找什么。您可以添加屏幕截图。 【参考方案1】:您可以融合数据,然后将它们绘制如下:
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')
这将绘制:
【讨论】:
以上是关于具有 100 多个类别的堆积条形图的主要内容,如果未能解决你的问题,请参考以下文章
具有 50 多个创建的虚拟变量的堆积条形图(百分比)? [关闭]