The goal of this package is to enable R users to format their ggplots to look like they were made in GraphPad Prism. I moved away from Prism to R for statistics quite a while ago, however I missed the ‘look’ that GraphPad Prism graphs have. Which is how I got the idea to make this package.
This document outlines what features are available in
ggprism
and has links to guides with more detailed examples
of how to use each function.
The most useful function in this package is
theme_prism()
which is a ‘complete’ theme which works just
like any other standard ggplot2 theme e.g. theme_grey()
.
The standard theme palette is "black_and_white"
but there
are many others which correspond to the colour schemes available in
Prism. Go to the All
Palettes page to see all the available palettes.
See this guide for more detailed usage examples.
# compare theme_grey() to theme_prism()
p1 <- ggplot(ToothGrowth, aes(x = factor(dose), y = len)) +
stat_summary(aes(fill = factor(dose)), na.rm = TRUE,
geom = "col", fun = mean, colour = "black", linewidth = 0.9) +
scale_y_continuous(limits = c(0, 30), expand = c(0, 0))
p2 <- p1 + theme_prism(base_size = 14)
p1 + p2
ggprism
includes the functions
scale_colour_prism()
/scale_color_prism()
and
scale_fill_prism()
which make the colour schemes from Prism
available for use with ggplot2 geoms and stats. You can either use them
with the default "black_and_white"
theme or try matching
themes and colour/fill scales.
See the this guide for more detailed usage examples.
# compare some colour and fill palettes with default theme_prism()
p <- ggplot(ToothGrowth, aes(x = factor(supp), y = len)) +
geom_boxplot(aes(colour = factor(supp), fill = factor(supp))) +
theme_prism(base_size = 14)
p1 <- p + scale_colour_prism(palette = "floral") +
scale_fill_prism(palette = "floral")
p2 <- p + scale_colour_prism(palette = "flames") +
scale_fill_prism(palette = "flames")
p1 + p2
# try using the same palette for colour, fill, and theme
p <- ggplot(ToothGrowth, aes(x = factor(supp), y = len)) +
geom_boxplot(aes(colour = factor(supp), fill = factor(supp)))
p3 <- p + theme_prism(palette = "candy_bright") +
scale_colour_prism(palette = "candy_bright") +
scale_fill_prism(palette = "candy_bright")
p4 <- p + theme_prism(palette = "neon") +
scale_colour_prism(palette = "neon") +
scale_fill_prism(palette = "neon")
p3 + p4
Additionally, scale_shape_prism()
includes some shape
scales which roughly match the shapes (and order of shapes) used in
GraphPad Prism.
ggprism
includes several axis guides which can be used
to change the look of continuous (or in some cases discrete) axes. These
guides work best with theme_prism()
but can also be used
with any other ggplot2 theme which has axis lines
e.g. theme_classic()
or theme_bw()
.
See the this guide for more detailed usage examples.
# show the 4 different axis guides included in ggprism
p <- ggplot(ToothGrowth, aes(x = factor(dose), y = len)) +
geom_jitter(aes(shape = factor(dose)), width = 0.2, size = 2) +
scale_shape_prism() +
theme_prism() +
theme(legend.position = "none")
p1 <- p + scale_y_continuous(limits = c(0, 40), guide = "prism_minor")
p2 <- p + scale_x_discrete(guide = "prism_bracket") +
scale_y_continuous(limits = c(0, 40))
p3 <- p + scale_y_continuous(limits = c(0, 40), guide = "prism_offset")
p4 <- p + scale_y_continuous(limits = c(0, 40), guide = "prism_offset_minor")
(p1 + p2) / (p3 + p4)
ggprism
includes the add_pvalue()
function
to easily add p-values from a simple data.frame to your plots. This
function is a re-written version of stat_pvalue_manual()
from the ggpubr
package. add_pvalue()
is more flexible to different
inputs than stat_pvalue_manual()
and also allows you to
change the look of the brackets and text more easily.
See the this guide for more detailed usage examples.
# make a p-value table
df_p_val <- data.frame(
group1 = "OJ",
group2 = "VC",
p.adj = 0.0606,
y.position = 36
)
# make a plot
p1 <- ggplot(ToothGrowth, aes(x = factor(supp), y = len)) +
geom_boxplot(aes(fill = factor(supp))) +
scale_fill_prism(palette = "candy_bright") +
theme_prism() +
theme(legend.position = "none")
# add the p-value
p2 <- p1 + add_pvalue(df_p_val)
p1 + p2