r - 超过100个类别的散布堆积条形图

标签 r dataframe ggplot2 plotly r-plotly

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

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')

这将绘制:

关于r - 超过100个类别的散布堆积条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44929859/

相关文章:

r - 是否可以在 R 中使用 ifelse() 添加第三个虚拟变量?

r - 使用 ggmap 缓存 map

r - ggplot 堆叠条形图 2 列

r - 使用平滑时无法删除图例符号后面的灰色区域

r - 一维矩阵更改为R中的向量

r - 如何将一维表转换为具有两列的数据框

python - Pandas Dataframe - 隔离值

python - 使用另一列的值获取某一列的值

r - 根据列中的值和阈值保留值删除行

python - 如何将大于 RAM 限制的 gzip 文件导入 Pandas DataFrame? "Kill 9"使用 HDF5?