r - 使用melt和ggplot绘制条形图

标签 r ggplot2 melt

我有一个这样的数据集。

   > ds
          domanda esito cella
    22870   22870     B    3
    22893   22893     R    4
    16258   16258     P    2
    14684   14684     P    2
    12873   12873     B    1
    12933   12933     B    2
    12047   12047     R    2
    22880   22880     B    3
    11479   11479     P    3
    20836   20836     B    3

我需要生成一个图表,其中 x 轴上有“cella”元素(从 1 到 49,我只向您展示了其中的一部分)。对于每个内层,我想要一个由三种颜色组成的条形,具体取决于相应的 P、B、R 元素。 例如,在 cella 2 上,我想要一个长度为 4 的条形,颜色为紫色(2 个单位)、蓝色(1 个单位)和红色(1 个单位)。 我知道我可以使用函数 melt 然后使用 ggplot (使用 ),但我没有得到我想要的。有人可以帮忙吗?

我尝试过的:

> this.col
 [1] 2 1 3 3 2 2 1 2 3 2

从该颜色文件(通过“esito”列获得)开始,我做了以下操作:

ds_som.m = melt(ds_som[,2:3],id=c("cella"))

ggplot(data=ds_som.m, aes(x=ds_som.m$cella, y=ds_som.m$value, 
                                     fill=ds_som.m$variable,col=this.col))+
  geom_bar(stat = "identity")+ 
  scale_fill_brewer(direction=-1)+
  guides(fill = guide_legend(title = "Esiti", title.position = "top"))

最佳答案

我们可以尝试

library(dplyr)
library(ggplot2)
ds[-1] %>% 
    group_by(cella) %>%
    mutate(n =n()) %>%
    unique() %>% 
    ggplot(., aes(x= cella, y=n, fill=esito)) + 
        geom_bar(stat='identity', position='dodge')

关于r - 使用melt和ggplot绘制条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37068073/

相关文章:

r - 如何使用 ggplot2 旋转和居中 y 轴标题?

r - 融化数据框, reshape 高大的数据框

python - 如何在 Python 中使用 Pandas 从具有季度数据的行创建单列月度值?

r 叠加直方图和密度图上的频率计数

r - 将绘图列表中的绘图保存/导出为单个 .png 文件

r - 将ggplot中只有一个图例的标签斜体

将具有两列的data.frame reshape 为具有数据的多列(R)

r - 使用 xtable 覆盖行名重命名重复项

r - 使用 R 和 Hadoop 进行逻辑回归

r - 如何计算依赖于使用每行变量值的函数的列?