Nono_sad
Nono_sad

Reputation: 443

Barplot of groups based on counts

I'm trying to make barplot

Data are in dataframe. In those dataframes I have several column, one named ID and another count.

First I'm trying to make group of this count. In the barplot we should see,count=0,count=1,count=2,count>=3

Some exemple data

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

Obviously here, barplots of the dataframes will look same

I tried to make this in ggplot (it's not nice at all)

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

I got something like that WhatIgot What I'm trying to do is to have different groups within a barplot, like the proportion of counts 0, proportion of counts 1,2 and proportion of counts greater (and equal) to 3.

I expect something like that

WhatIWant

But of course in my example barplots will look same. Also if you have some suggestion to change Y axis from 1.00 to 100%.

Also One of my problem is that length of my real dataframes are not equal but it should doesn't matter because I try to get the percentage of count group

Upvotes: 1

Views: 2572

Answers (2)

Nono_sad
Nono_sad

Reputation: 443

So I did something to try to create my 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)

So I got something like that : enter image description here

If Someone have the solution to make different group of counts : count=0,count=1,count=2,count>=3

Upvotes: 0

Jet
Jet

Reputation: 690

You need to put all the data in 1 dataframe, in long format. Then cast your counts to factors, and it works.

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

Upvotes: 2

Related Questions