Reputation: 1238
Having three dataframes like this:
library(tidyverse)
library(ggplot2)
Dataframe 1:
df1 <- structure(list(company = structure(c(3L, 5L, 1L, 2L, 4L, 3L,
5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L,
1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L,
2L, 4L), .Label = c("amazon", "bsd", "google", "so", "yahoo"), class = "factor"),
period = structure(c(2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
1L), .Label = c("after", "before"), class = "factor"), val = c(0.262776250810038,
0.187917588433778, 0.697682733346741, 0.158756228911086,
0.378985944448169, 0.249033541149918, 0.157828875332395,
0.762575137985743, 0.148767625304462, 0.394985586914259,
0.268776116734822, 0.177604969721347, 0.694811289133204,
0.160510379656321, 0.389823691090702, 0.280675292172242,
0.181169135885232, 0.655493731983643, 0.177839601349691,
0.387633795892829, 0.257949543026971, 0.169661013161717,
0.665359433308753, 0.149795535295301, 0.384002592120846,
0.244474983799245, 0.162231011597506, 0.650253625617304,
0.147493910750598, 0.424582690889589, 0.291490692945409,
0.241190141002436, 0.622555920538089, 0.215134857321624,
0.383108757346205, 0.25750262563965, 0.230989251636835, 0.708699246944202,
0.193749860338316, 0.427264195213515)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -40L))
Second:
df2 <- structure(list(company = structure(c(3L, 5L, 1L, 2L, 4L, 3L,
5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L,
1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L,
2L, 4L), .Label = c("amazon", "bsd", "google", "so", "yahoo"), class = "factor"),
period = structure(c(2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
1L), .Label = c("after", "before"), class = "factor"), val = c(0.262776250810038,
0.187917588433778, 0.697682733346741, 0.158756228911086,
0.378985944448169, 0.249033541149918, 0.157828875332395,
0.762575137985743, 0.148767625304462, 0.394985586914259,
0.268776116734822, 0.177604969721347, 0.694811289133204,
0.160510379656321, 0.389823691090702, 0.280675292172242,
0.181169135885232, 0.655493731983643, 0.177839601349691,
0.387633795892829, 0.257949543026971, 0.169661013161717,
0.665359433308753, 0.149795535295301, 0.384002592120846,
0.244474983799245, 0.162231011597506, 0.650253625617304,
0.147493910750598, 0.424582690889589, 0.291490692945409,
0.241190141002436, 0.622555920538089, 0.215134857321624,
0.383108757346205, 0.25750262563965, 0.230989251636835, 0.708699246944202,
0.193749860338316, 0.427264195213515)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -40L))
Third:
df3 <- structure(list(company = structure(c(3L, 5L, 1L, 2L, 4L, 3L,
5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L,
1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L, 2L, 4L, 3L, 5L, 1L,
2L, 4L), .Label = c("amazon", "bsd", "google", "so", "yahoo"), class = "factor"),
period = structure(c(2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L,
2L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,
1L), .Label = c("after", "before"), class = "factor"), val = c(0.262776250810038,
0.187917588433778, 0.697682733346741, 0.158756228911086,
0.378985944448169, 0.249033541149918, 0.157828875332395,
0.762575137985743, 0.148767625304462, 0.394985586914259,
0.268776116734822, 0.177604969721347, 0.694811289133204,
0.160510379656321, 0.389823691090702, 0.280675292172242,
0.181169135885232, 0.655493731983643, 0.177839601349691,
0.387633795892829, 0.257949543026971, 0.169661013161717,
0.665359433308753, 0.149795535295301, 0.384002592120846,
0.244474983799245, 0.162231011597506, 0.650253625617304,
0.147493910750598, 0.424582690889589, 0.291490692945409,
0.241190141002436, 0.622555920538089, 0.215134857321624,
0.383108757346205, 0.25750262563965, 0.230989251636835, 0.708699246944202,
0.193749860338316, 0.427264195213515)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -40L))
We can create a density plot for every data frame using this:
df_long %>%
ggplot(aes(x = val, color = company, linetype = period)) +
geom_density() +
theme_bw()
How is it possible to create three plots into one using the three different dataframe the one to be down from the other and have titles like Grey for df1 plot Temperature for df2 plot and Time for df3 plot?
Upvotes: 0
Views: 37
Reputation: 38063
If your data has compatible columns, like your example data, you could combine them into one large dataframe first, marking their origin.
newdf <- rbind(
cbind(df1, category = "Grey"),
cbind(df2, category = "Temperature"),
cbind(df3, category = "Time")
)
ggplot(newdf, aes(val, colour = company, linetype = period)) +
geom_density() +
facet_wrap(~ category, ncol = 1)
Alternatively, if the data is not compatible but still have the same column names, you could specify every data frame to a layer seperately.
ggplot(mapping = aes(val, colour = company, linetype = period)) +
geom_density(data = cbind(df1, facet = "Grey")) +
geom_density(data = cbind(df2, facet = "Temperature")) +
geom_density(data = cbind(df3, facet = "Time")) +
facet_wrap(~ facet, ncol = 1)
If the column names don't match, you should specify the mapping = aes(...)
argument in every layer seperately instead of in the call to ggplot()
.
Upvotes: 2