How to Plot Categorical Data in R-Quick Guide
Plot Categorical Data in R, Categorical variables are data types that can be separated into categories. Race, sex, age group, and educational level are examples of categorical variables.
This tutorial describes three approaches to plot categorical data in R.
Let’s make use of Bar Charts, Mosaic Plots, and Boxplots by Group.
Approach 1: Bar Chart
The code below demonstrates how to make a bar chart to represent the frequency of teams in a given data frame. Let’s load the library first,
Timeseries analysis in R » Decomposition, & Forecasting »
library(ggplot2)
Create dataset
data <- data.frame(result = c('W', 'L', 'L', 'W', 'W', 'L', 'L', 'L', 'W', 'L'), team = c('B', 'D', 'B', 'A', 'D', 'A', 'A', 'D', 'C', 'D'), score = c(18, 38, 29, 28, 32, 55, 22, 48, 33, 12), rebounds = c(15, 5, 9, 10, 15, 8, 9, 12, 11, 10))
head(data)
result team score rebounds 1 W B 18 15 2 L D 38 5 3 L B 29 9 4 W A 28 10 5 W D 32 15 6 L A 55 8
Create a bar chart of teams
ggplot(data, aes(x=reorder(team, team, function(x)-length(x)))) + geom_bar(fill='red') + labs(x='Team')
datatable editor-DT package in R » Shiny, R Markdown & R »
Approach 2: Boxplots by Group
A useful technique to show a numeric variable that is grouped by a categorical variable is to use grouped boxplots.
The following code, explains how to make boxplots that display the distribution of points scored per team
Create boxplots of points, grouped by team
ggplot(data, aes(x=team, y=score)) + geom_boxplot(fill='green')
The teams are represented on the x-axis, while the distribution of points scored by each team is represented on the y-axis.
Kruskal Wallis test in R-One-way ANOVA Alternative »
Approach 3: Mosaic Plot
A mosaic plot is a form of a graph that shows the frequencies of two categorical variables on the same graph.
The following code demonstrates how to make a mosaic plot that displays the frequency of the categorical variables “result” and “team” in one figure
Create the counts
counts <- table(data$result, data$team)
#create a mosaic plot
mosaicplot(counts, xlab='Match Result', ylab='Team',main='Wins by Team', col='orange')
The game outcome is displayed on the x-axis, while the four separate teams are displayed on the y-axis.