Only the stripped down density plot appears in the output:
library(ggplot2)
library(cowplot)
raises <- attitude$raises
df <- data.frame(raises)
ph <- ggplot(df, aes(x = raises))
geom_histogram(binwidth = 1, color = "black", fill = "light grey")
scale_x_continuous(breaks = seq(40, 90, by = 10))
ylim(0,3)
theme_classic()
pd <- ggplot(df, aes(x = raises))
geom_density()
scale_x_continuous(breaks = seq(40, 90, by = 10))
scale_y_continuous(expand = expansion(mult = c(0, 0.1)), position = "right")
theme_classic()
theme(axis.line.x = element_blank(),
axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.ticks.x = element_blank())
alpl <- align_plots(ph, pd, align = "hv", axis = "tblr")
ggdraw(alpl[[1]]) draw_plot(alpl[[2]])
I would like to overlay them so that you can see the histogram with the frequency as well as the density.
CodePudding user response:
You have an opaque plot background and panel background in your density plot which you need to remove in theme
. Obviously, I don't have your data, but the following code gives you the idea:
library(ggplot2)
library(cowplot)
set.seed(1)
df <- data.frame(raises = c(rnorm(100, 65, 10)))
ph <- ggplot(df, aes(x = raises))
geom_histogram(binwidth = 1, color = "black", fill = "light grey")
scale_x_continuous(breaks = seq(40, 90, by = 10), limits = c(40, 90))
ylim(0,3)
theme_classic()
pd <- ggplot(df, aes(x = raises))
geom_density()
scale_x_continuous(breaks = seq(40, 90, by = 10), limits = c(40, 90))
scale_y_continuous(expand = expansion(mult = c(0, 0.1)), position = "right")
theme_classic()
theme(axis.line.x = element_blank(),
axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.ticks.x = element_blank(),
plot.background = element_blank(),
panel.background = element_blank())
alpl <- align_plots(ph, pd, align = "hv", axis = "tblr")
ggdraw(alpl[[1]]) draw_plot(alpl[[2]])