In this post I’ll briefly introduce how to use ggplot2 (ggplot), which by default makes nicer looking plots than the standard R plotting functions.
The first thing to know is that ggplot requires data frames work properly. It is an entirely different framework from the standard plotting functions in R. Let’s grab a default data frame in R called mtcars. Let’s confirm it’s a data frame using some code:
# Get the mtcars data types class(mtcars)
R confirms that this is in fact a data frame.
# the output  "data.frame"
Feel free to take a look at the data itself by just typing the name into R. For bevity, I won’t show the data in this post.
# Look at mtcars mtcars
Next let’s define some standard plot function names in ggplot.
geom_point = scatterplot (points or solid lines)
geom_boxplot = boxplot
geom_bar = column plot
There’s many more (really cool) plot types, but I’ll stop here for now.
Let’s make our scatterplot. Here’s the code to make a standard plot. Don’t forget to load the package ggplot2 before running this code using the library function (install ggplot2 first if you haven’t done so before).
# Plot the data library(ggplot2) ggplot(mtcars, aes(hp, mpg)) + geom_point()
Success! The code above seems strange at first, but let’s dive into how it works. First we call ggplot and provide the data frame name ‘mtcars’. Then we give the x & y variables using the aes command. Finally we specify we’re making a scatterplot by attaching + geom_point().
Now let’s make this look better! This is where the power of ggplot shines. It’s really easy to make a nice looking plot.
# Plot the data p <- ggplot(mtcars, aes(hp, mpg)) p + geom_point() + labs (x = "Horsepower (hp)", y = "Miles per Gallon (mpg)") + ggtitle("My mtcars Plot")
We can see that the syntax is a bit different this time. We save the first ggplot call to a variable p (p for plot), but any variable will work. Then we attached more plotting features using p + ——. For this plot we added custom x and y axis labels and a title.
Next let’s make a change to the overall look of the plot, using what ggplot calls a theme. We’ll add theme_bw.
# Plot the data p <- ggplot(mtcars, aes(hp, mpg)) p + geom_point() + labs (x = "Horsepower (hp)", y = "Miles per Gallon (mpg)") + ggtitle("My mtcars Plot") + theme_bw()
Finally, let’s spruce it up my coloring the points blue and making them bigger, while also making our axes and titles bigger. The code below makes this final plot.
# Make the final plot p <- ggplot(mtcars, aes(hp, mpg)) p + geom_point(size = 3, color = "blue") + labs (x = "Horsepower (hp)", y = "Miles per Gallon (mpg)") + ggtitle("My mtcars Plot") + theme_bw()+ theme(axis.text = element_text(size = 12), axis.title = element_text(size = 14), plot.title = element_text(size = 18, face = "bold"))
Hope this helped explain the basics of ggplot. Here’s the link to the ggplot2 documentation (click me).