I am creating two graphs that use the same dataset and date range, though the top graph shows total specimens per month and the bottom shows typed and untyped specimens by year. Because of the grouping by year/month they xaxis ticks don’t align and I don’t know of a clean way to do this, though I am really interested to learn how to do this properly as its something I will be doing frequently.
Currently using ggarrange to create this figure:
Using the following code:
EVTotalPlot <- ggplot(EVTotal, aes(x = MonthStart, y = Count)) +
geom_bar(stat = "identity", fill = "grey10") +
#ylab("Total Numbe rof EV Positive Specimens") +
theme_bw() +
scale_x_date(breaks = "1 year",
date_labels = "%Y")+
theme(
axis.title.y = element_text(size = 14, family = "sans"),
axis.text.x = element_text(size = 14, family = "sans", colour = "black", angle = 45, vjust = 1, hjust = 1),
axis.text.y = element_text(colour = "black", size = 14, family = "sans"),
axis.title.x = element_blank(),
legend.text = element_text(size = 14, family = "sans"),
legend.title = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black"),
plot.title = element_text(size = 14, family = "sans", face = "bold", hjust = 0),
panel.grid.minor = element_blank(),
legend.position = "none"
)
EVTotalPlot
EVTypable <- ggplot(EVPositive, aes(x = YearStart, y = Count, fill = Typable)) +
geom_bar(stat = "identity", position = position_fill(reverse = TRUE)) +
#ylab("Proportion of Positive EV Typed by Sequencing") +
theme_bw() +
scale_x_date(breaks = "1 year",
date_labels = "%Y")+
scale_fill_manual(values = c("Typed" = "#AD2E24", "Untyped" = "#F1A66A"))+
theme(
axis.title.y = element_text(size = 14, family = "sans"),
axis.text.x = element_text(size = 14, family = "sans", colour = "black", angle = 45, vjust = 1, hjust = 1),
axis.text.y = element_text(colour = "black", size = 14, family = "sans"),
axis.title.x = element_blank(),
legend.text = element_text(size = 14, family = "sans"),
legend.title = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black"),
plot.title = element_text(size = 14, family = "sans", face = "bold", hjust = 0),
panel.grid.minor = element_blank(),
legend.position = "none"
)
EVTypable
RatioFigure <- ggarrange(EVTotalPlot, EVTypable,
ncol = 1,
nrow = 2,
heights = c(1,2),
widths = c(1,1),
labels = c("A", "B"))
RatioFigure
Thanks for any help!