基于计数的组图

时间:2019-04-08 15:40:29

标签: r ggplot2 bar-chart

我正在尝试制作情节图

数据在数据框中。在这些数据框中,我有几列,一个列名为ID,另一个列。

首先,我试图将这一点分组。在小图中,我们应该看到,count = 0,count = 1,count = 2,count> = 3

一些示例数据

data1 <- data.frame(ID="ID_1", count=(rep(seq(0,10,by=1),each=4)))
data2 <- data.frame(ID="ID_2", count=(rep(seq(0,10,by=1),each=4)))
data3 <- data.frame(ID="ID_3", count=(rep(seq(0,10,by=1),each=4)))

很明显,数据框的条形图看起来相同

我试图在ggplot中做到这一点(一点都不好)

ggplot(data1)+
geom_bar(aes(x = ID, fill = count),position = "fill")+
geom_bar(data=data2,aes(x = ID, fill = count),position = "fill")+
geom_bar(data=data3,aes(x = ID, fill = count),position = "fill")

我有类似的东西 WhatIgot 我想做的是在小图中有不同的组,例如计数0的比例,计数1,2的比例和大于(等于)3的计数比例。

我希望有这样的事情

WhatIWant

但是,在我的示例中,条形图当然看起来是一样的。 另外,如果您有建议将Y轴从1.00更改为100%。

我的问题之一是我的实际数据帧的长度不相等,但这无关紧要,因为我尝试获取计数组的百分比

2 个答案:

答案 0 :(得分:2)

您需要将所有数据放入 long 格式的1个数据帧中。然后将计数转换为因子,就可以了。

ggplot(bind_rows(data1, data2, data3)) +
geom_bar(aes(x = ID, fill = as.factor(count)), position = "fill") +
scale_y_continuous(labels=scales::percent)   # To get the Y axis in percentage

enter image description here

答案 1 :(得分:0)

所以我做了一些尝试来创建我的barplot

data1$var="first"
data2$var="second"
data3$var="third"
data4$var="fourth"
data5$var="fifth"

full_data=rbind(data1,data2,data3,data4,data5)

ggplot(ppgk) +
geom_bar(aes(x = var, fill = as.factor(Count)), position = "fill")+
scale_y_continuous(labels=scales::percent)

所以我得到了这样的东西: enter image description here

如果有人有办法进行不同组的计数:count = 0,count = 1,count = 2,count> = 3