Combine Two ggplot2 Plots from Different Data Frames in R (Example)
In this article you’ll learn how to draw a ggplot2 plot based on several different data sources in the R programming language.
Table of contents:
Let’s do this…
Example Data, Add-On Packages & Default Plot
Consider the following example data:
data1 <- data.frame(x = 1:5, # Create first data frame y = 1:5) data1 # Print first data frame # x y # 1 1 1 # 2 2 2 # 3 3 3 # 4 4 4 # 5 5 5 data2 <- data.frame(x = 2:6, # Create second data frame y = 8:4) data2 # Print second data frame # x y # 1 2 8 # 2 3 7 # 3 4 6 # 4 5 5 # 5 6 4 |
data1 <- data.frame(x = 1:5, # Create first data frame y = 1:5) data1 # Print first data frame # x y # 1 1 1 # 2 2 2 # 3 3 3 # 4 4 4 # 5 5 5 data2 <- data.frame(x = 2:6, # Create second data frame y = 8:4) data2 # Print second data frame # x y # 1 2 8 # 2 3 7 # 3 4 6 # 4 5 5 # 5 6 4
The previous RStudio console output shows the structure of our example data sets – Both data frames contains two numeric columns with the variable names x and y.
If we want to use the functions of the ggplot2 package, we also have to install and load ggplot2:
install.packages("ggplot2") # Install ggplot2 package library("ggplot2") # Load ggplot2 package |
install.packages("ggplot2") # Install ggplot2 package library("ggplot2") # Load ggplot2 package
Now, we can move on to the example…
Example: Drawing ggplot2 Plot Based on Two Different Data Frames
This section shows how to use the ggplot2 package to draw a plot based on two different data sets.
For this, we have to set the data argument within the ggplot function to NULL. Then, we are specifying two geoms (i.e. geom_point and geom_line) and define the data set we want to use within each of those geoms.
ggp <- ggplot(NULL, aes(x, y)) + # Draw ggplot2 plot based on two data frames geom_point(data = data1, col = "red") + geom_line(data = data2, col = "blue") ggp # Draw plot |
ggp <- ggplot(NULL, aes(x, y)) + # Draw ggplot2 plot based on two data frames geom_point(data = data1, col = "red") + geom_line(data = data2, col = "blue") ggp # Draw plot
Figure 1 visualizes the output of the previous R code – A ggplot2 graph created based on multiple different data matrices.
Video, Further Resources & Summary
If you need more information on the R programming codes of this article, you may watch the following video of my YouTube channel. In the video, I illustrate the content of this article.
Please accept YouTube cookies to play this video. By accepting you will be accessing content from YouTube, a service provided by an external third party.
If you accept this notice, your choice will be saved and the page will refresh.
Furthermore, I can recommend having a look at some of the other tutorials of this homepage:
- Draw Unbalanced Grid of ggplot2 Plots
- Arrange List of ggplot2 Plots
- Add Common Legend to Combined ggplot2 Plots
- R Graphics Gallery
- The R Programming Language
Summary: In this article, I explained how to create a ggplot2 graph with two different data sets in the R programming language – a very nice method in case you want to add a new layer or series of data points to a ggplot2 plot. Let me know in the comments section, in case you have additional questions.
Statistics Globe Newsletter
6 Comments. Leave new
Hi, how are you?
I need your help!
I have 2 data frame with 3 columns each one (with 264.000 rows). The columns “Id1” (first) and “Id2” (second) are the same in both files (.tsv).
I tried to merge the columns Id1 and Id2 for two files but this result in an error: cannot allocate vector of size 972.2 Mb in R.
I wanna plot (scatter plot) the numerical values in the third columns for the two different files: Val1 (third column for file 1) VS Val_1 (third column for file 2).
Can you help me please?
Hey Mauricio,
This sounds like a huge file! Do you really need all these data points or is it possible to make the file smaller before merging it?
You may have a look at this tutorial: https://statisticsglobe.com/r-error-cannot-allocate-vector-of-size-n-gb It gives some tips on how to handle the error message you are facing.
I hope that helps!
Joachim
Hello,
I have a problem. I am working on two NetCDF files and I plotted them separately without having any problems. When I was combining them in one by following your method, “Error in FUN(X[[i]], …) : object ‘x’ not found” – this error keeps coming. What should I do? I want to plot from multiple NetCDF files in a single plot. Not to mention, spatial references, units and resolutions are same in the every files.
Hi Sudipta,
Could you post your R code? It’s difficult to tell the problem without seeing it.
Thanks
Joachim
Your past saved me!
Could you explain how to add the legend to the figure?
I tried to add the legend but I could not do it.
Thanks
Hi Sael,
Thanks a lot, glad the tutorial helped!
One solution would be to add the aes() function to both geoms, i.e.
Note that this changes the colors to the default color palette of the ggplot2 package.
Regards
Joachim