############################# # Barplots: ggplot # stats +/- # violin +/- # barplot +/ # beeswarm ############################# lf_bp2 <- function(lf_df #lf_duet , p_title = "" #, colour_categ = "outcome" , colour_categ = "mutation_info_labels" , dot_colours = c("red", "blue") , x_grp = "mutation_info_labels" , y_var = "param_value" , facet_var = "param_type" , n_facet_row = 1 , y_scales = "free_y" , colour_bp_strip = "khaki2" , dot_size = 3 , dot_transparency = 0.3 #0.3: lighter , violin_quantiles = c(0.25, 0.5, 0.75) # can be NULL , line_thickness = 0.65 , my_ats = 22 # axis text size , my_als = 20 # axis label size , my_fls = 20 # facet label size , my_pts = 22 # plot title size) , make_boxplot = FALSE #, bp_width = c("auto", 0.5) , bp_width = "auto" , add_stats = TRUE , stat_grp_comp = c("R", "S") , stat_method = "wilcox.test" , my_paired = FALSE , stat_label = c("p.format", "p.signif") , monochrome = FALSE ) { fwv = as.formula(paste0("~", facet_var)) #fwv = reformulate(facet_var) # Only use the longer colour palette if there are many outcomes if (monochrome) { lf_bp_colours = c(1:length(levels(lf_df[[colour_categ]]))) lf_bp_colours[c(1:length(levels(lf_df[[colour_categ]])))] = rgb(0,0,0) } else { if (length(levels(lf_df[[colour_categ]])) > 2) { lf_bp_colours = consurf_bp_colours } else { #lf_bp_colours = hue_pal()(2) lf_bp_colours = dot_colours } } if (bp_width == "auto"){ bp_width = 0.5/length(unique(lf_df[[x_grp]])) }else{ bp_width = bp_width } my_comparisonsL <- list( stat_grp_comp ) ggplot(lf_df, aes_string(x = x_grp, y = y_var)) + facet_wrap(fwv , nrow = n_facet_row , scales = y_scales) + ggplot2::scale_color_manual(values = lf_bp_colours) + geom_violin(trim = T , size = line_thickness , scale = "width" , colour = "black" #, position = position_dodge(width = 0.9) , draw_quantiles = violin_quantiles) + # Add formatting to graph theme(axis.text.x = element_text(size = my_ats) , axis.text.y = element_text(size = my_ats , angle = 0 , hjust = 1 , vjust = 0) , axis.title.x = element_text(size = my_ats) , axis.title.y = element_text(size = my_ats) , plot.title = element_text(size = my_pts , hjust = 0.5 , colour = "black" , face = "bold") , strip.background = element_rect(fill = colour_bp_strip) , strip.text.x = element_text(size = my_fls , colour = "black") , legend.title = element_text(color = "black" , size = my_als) , legend.text = element_text(size = my_ats) , legend.direction = "vertical") + labs(title = p_title , x = "" , y = "") + stat_compare_means(comparisons = my_comparisonsL , method = stat_method , paired = my_paired , label = stat_label[2] , size = 5) + geom_quasirandom( size = dot_size , alpha = dot_transparency , show.legend = FALSE # , fast = FALSE , cex = 0.8 , aes( colour = factor( eval( parse( text = colour_categ ) ) ) ) ) } #lf_bp2(lf_consurf)