'arranging multiple plots with cowplot cuts off statistics
When arranging multiple plots from a plotlist with cowplot, the stat_compare_means values get cut off in the grid (see picture). When I am removing the plots titles it will still be cut off. Is there a way to fix this? Please find reproducible code below:
library(tidyverse)
library(ggplot2)
library(ggpubr)
library(cowplot)
plotlist = list()
u=3
for (i in 0:3) {
single_plot <- iris %>%
ggplot(aes(x = Species, y = Sepal.Width , group=Species)) + #create a plot, specify x,y, parameters
geom_point(aes(shape = Species)) + # create a
stat_summary(fun = mean, # calculate SEM, specify type and width of the resulting bars
fun.min = function(x) mean(x) - sd(x)/sqrt(length(x)), #calculate ymin SEM
fun.max = function(x) mean(x) + sd(x)/sqrt(length(x)), #calculate ymax SEM
geom = 'errorbar', width = 0.2) + #specify type of stat_summary and its size
stat_summary(fun = mean, fun.min = mean, fun.max = mean, #calculate mean, specify type, width and size (fatten) of the resulting bars
geom = 'errorbar', width = 0.4, size=1.2) +#specify type of stat_summary and its size
labs(x = "x_label", y = "y_label") +#set the x- and y-axis labels
ggtitle("plot_title")+#set the plot title
theme_classic() +#adjust the basic size of the plot
theme(
legend.position = "none", #do not use a plot legend
)+
stat_compare_means(method="kruskal.test")
plotlist <- append(plotlist, list(single_plot))
i=i+1
}
plot_grid(plotlist = plotlist,
labels = "AUTO"
)
Solution 1:[1]
increase the y axis scale and expand the limits
For this particular plot, I found this combination of parameters to work well.
+ scale_y_continuous(limits = c(2, 5), expand = c(0, 0.3))
Solution 2:[2]
I now figured out the solution. The y-axis has to be scaled using scale_y_continious with a relative expansion using expand(expand = expansion(mult = c(x_expasion, y_expansion). See reproducible code below.
library(tidyverse)
library(ggplot2)
library(ggpubr)
library(cowplot)
plotlist = list()
u=3
for (i in 0:3) {
single_plot <- iris %>%
ggplot(aes(x = Species, y = Sepal.Width , group=Species)) + #create a plot, specify x,y, parameters
geom_point(aes(shape = Species)) + # create a
stat_summary(fun = mean, # calculate SEM, specify type and width of the resulting bars
fun.min = function(x) mean(x) - sd(x)/sqrt(length(x)), #calculate ymin SEM
fun.max = function(x) mean(x) + sd(x)/sqrt(length(x)), #calculate ymax SEM
geom = 'errorbar', width = 0.2) + #specify type of stat_summary and its size
stat_summary(fun = mean, fun.min = mean, fun.max = mean, #calculate mean, specify type, width and size (fatten) of the resulting bars
geom = 'errorbar', width = 0.4, size=1.2) +#specify type of stat_summary and its size
scale_y_continuous(expand = expansion(mult = c(0,.1))) +#create continouos y scale and set relative expansion
labs(x = "x_label", y = "y_label") +#set the x- and y-axis labels
ggtitle("plot_title")+#set the plot title
theme_classic() +#adjust the basic size of the plot
theme(
legend.position = "none", #do not use a plot legend
)+
stat_compare_means(method="kruskal.test")
plotlist <- append(plotlist, list(single_plot))
i=i+1
}
print(plot_grid(plotlist = plotlist,
labels = "AUTO"
))
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Rich Pauloo |
Solution 2 | user18493293 |