超过 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')
这将绘制:
我有一个包含 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')
这将绘制: