Among the various types of data visualizations, strip charts, also known as one-dimensional scatter plots, can offer simple and straightforward data analysis and representation. Strip charts are often used for displaying and comparing values for a single category of data. They are especially useful when you need to compare the distribution of a numeric variable in different categories.
In this tutorial, we will explore how to create a strip chart in R, using built-in R functions as well as popular libraries such as ggplot2.
We will be using the ggplot2 package to create our strip charts, so we need to make sure we have it installed and loaded into our R environment. If you don’t have ggplot2 installed, you can use the
install.packages() function to install it.
# Installing the ggplot2 package install.packages('ggplot2') # Loading the ggplot2 package library(ggplot2)
For this tutorial, we will use the built-in
mtcars dataset that comes with R. It is a simple, yet rich, dataset that contains various car attributes such as miles per gallon, number of cylinders, horsepower, and so on.
To load the
mtcars dataset, use the following code:
# Load the mtcars dataset data(mtcars)
Creating a Basic Strip Chart in R
We will start by creating a basic strip chart of the
mpg (miles per gallon) attribute against the
cyl (number of cylinders) attribute from our
In R, a basic strip chart can be created using the
stripchart() function. Here’s how you can do it:
# Creating a strip chart stripchart(mtcars$mpg ~ mtcars$cyl, main = "Miles Per Gallon vs Number of Cylinders", xlab = "Number of Cylinders", ylab = "Miles Per Gallon", pch = 19)
In the above code:
mtcars$mpg ~ mtcars$cylspecifies that we want to create a strip chart of the
mpgattribute against the
mainspecifies the title of the chart.
ylabspecify the labels of the x and y axes, respectively.
pchspecifies the shape of the points on the chart. In this case,
19represents filled circles.
Enhancing Strip Charts Using ggplot2
While the basic strip chart is useful, it might not always offer the most informative representation, especially for complex datasets. To get a more detailed view, we can use the ggplot2 package, which offers more control and customization options.
Creating a Strip Chart with ggplot2
The ggplot2 package uses a layering approach to create plots, where you start with an empty canvas and then add elements such as data, axes, legends, and so on.
To create a strip chart with ggplot2, we use the
geom_jitter() function. This function adds a bit of random ‘jitter’ to the data points, reducing overlap and making the distribution of the points clearer.
Here’s how you can create a strip chart using ggplot2:
# Creating a strip chart with ggplot2 ggplot(mtcars, aes(x = factor(cyl), y = mpg)) + geom_jitter(width = 0.2) + labs(title = "Miles Per Gallon vs Number of Cylinders", x = "Number of Cylinders", y = "Miles Per Gallon")
In the above code:
ggplot(mtcars, aes(x = factor(cyl), y = mpg))sets up the empty canvas and maps the
cylattribute to the x-axis and the
mpgattribute to the y-axis.
geom_jitter(width = 0.2)adds the data points with some jitter.
labs()sets the title and labels for the axes.
Adding More Layers
With ggplot2, you can add more layers to your plot to make it more informative. For instance, you can add a boxplot layer to your strip chart to provide a summary of the data’s distribution.Here’s how you can do it:
# Creating a strip chart with a boxplot layer ggplot(mtcars, aes(x = factor(cyl), y = mpg)) + geom_jitter(width = 0.2) + geom_boxplot(alpha = 0.4) + labs(title = "Miles Per Gallon vs Number of Cylinders", x = "Number of Cylinders", y = "Miles Per Gallon")
In the above code,
geom_boxplot(alpha = 0.4) adds the boxplot layer to the strip chart. The
alpha parameter sets the transparency of the boxplots.
In this tutorial, we’ve learned how to create a strip chart in R, starting from a basic strip chart and gradually enhancing it using the ggplot2 package. As seen, strip charts provide a clear and simple way to visualize and compare distributions of numeric variables across different categories.