使用融化和ggplot的条形图

时间:2016-05-06 08:49:19

标签: 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,我只显示了你的一部分)。对于每个cella我想要一个由三种颜色组成的条,取决于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"))

1 个答案:

答案 0 :(得分:3)

我们可以尝试

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