JNab
JNab

Reputation: 135

How to bar plot answers per category in ggplot?

I have a tibble created like this:

tibble(district = c(1, 5, 3, 5, 2, 7, 8, 1, 1, 2, 2, 4, 5, 6, 8, 6, 3),
       housing = c(1, 1, 2, 1, 2, 2, 2, 1, 1, 2, 3, 2, 1, 1, 1, 3, 2))

Now I would like to know how the type of housing is distributed per district. Since the amount of respondents per district is different, I would like to work with percentages. Basically I'm looking for two plots;

1) One barplot in which the percentage of housing categories is visualized in 1 bar per district (since it is percentages all the bars would be of equal height). 2) A pie chart for every district, with the percentage of housing categories for that specific district.

I am however unable to group the data is the wished way, let along compute percentages of them. How to make those plots?

Thanks ahead!

Upvotes: 0

Views: 417

Answers (1)

jfeuerman
jfeuerman

Reputation: 177

Give this a shot:

library(tidyverse)
library(ggplot2)

# original data
df <- data.frame(district = c(1, 5, 3, 5, 2, 7, 8, 1, 1, 2, 2, 4, 5, 6, 8, 6, 3),
                 housing = c(1, 1, 2, 1, 2, 2, 2, 1, 1, 2, 3, 2, 1, 1, 1, 3, 2))

# group by district
df <- df %>%
  group_by(district) %>%
  summarise(housing=sum(housing))

# make percentages
df <- df %>%
  mutate(housing_percentage=housing/sum(df$housing)) %>%
  mutate(district=as.character(district)) %>%
  mutate(housing_percentage=round(housing_percentage,2))

# bar graph
ggplot(data=df) +
  geom_col(aes(x=district, y=housing_percentage))

# pie chart
ggplot(data=df, aes(x='',y=housing_percentage, fill=district)) +
  geom_bar(width = 1, stat = "identity", color = "white") +
  coord_polar("y", start = 0) +
  theme_void()

Which yields the following plots:

bar_plot

pie_chart

Upvotes: 1

Related Questions