有读者私信问小编有没有好的Graphpad Prism的绘图教程推荐,Graphpad Prism 想必做科研的同学们多少都会了解下,也是一个操作简单且功能强大的科研作图神器了,但考虑到其收费设定(可以理解)后,小编就告辞了
~~笑话,有ggplot2这么强大的开源免费的绘图软件了,还会考虑付费的吗?
在询问完读者到底喜欢Graphpad Prism 哪点?得到的答案原来是其绘图风格。这就完事了,小编推荐一个强大的科研绘图包,让你白嫖Graphpad Prism精美的科研主题风。本期推文主要内容如下:
R-ggprism包的官网地址为:https://csdaw.github.io/ggprism/index.html
ggprism包提供可完整的主题设置函数-theme_prism(),可以帮助你一行代码生成Graphpad Prism经典绘图风格。
对于图表元素中的颜色、填充、形状等,ggprism包分别提供scale_colour_prism()、scale_fill_prism()和scale_shape_prism() 函数进行一一设置。
ggprism包可通过以下代码绘制其独有的刻度风格:
+
scale_x/y_discretey/continuous(guide = "prism_bracket")
# 或者如下
guides(y/x = "prism_minor/")
+
ggprism包通过add_pvalue() 自动添加统计P值,这个小编认为对于经常绘制统计图表的同学们来说可谓是非常贴心了。
以上就基本介绍完ggprism包的主要绘图函数,接下来小编结合具体示例带大家体验ggprism包特有的绘图风格。
首先,我们来看下ggprism包theme_prism()函数主要有哪些参数:
# 以下为默认设置
theme_prism(
palette = "black_and_white",
base_size = 14,
base_family = "sans",
base_fontface = "bold",
base_line_size = base_size/14,
base_rect_size = base_size/14,
axis_text_angle = 0,
border = FALSE
)
接下来我们通过一个实例看一下theme_prism()的效果:
# 基础图表
base <- ggplot(mpg, aes(x = displ, y = cty)) +
geom_point(aes(colour = class))
# theme_prism()默认
them_prism <- base + ggprism::theme_prism()
#theme_prism()定制操作
them_prism_set <- base + ggprism::theme_prism(palette = "purple_passion",
base_size = 16,
base_line_size = 0.2,
base_family = "Roboto Condensed",
axis_text_angle = 45,
border = TRUE, base_rect_size = 2)
可视化结果如下:
theme_prism() Set
这里小编只介绍颜色(colour)和形状(shape)的情况,如下:
base <- ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point(aes(colour = factor(cyl), shape = factor(cyl)), size = 3) +
theme_prism() +
labs(subtitle = "theme_prism()")+
theme(legend.position = c(0.8, 0.8))
p1 <- base + hrbrthemes::scale_colour_ipsum()+
labs(subtitle = "hrbrthemes::scale_colour_ipsum()")
p2 <- base + scale_colour_prism() +
labs(subtitle = "scale_colour_prism()")
p3 <- base + scale_colour_prism(palette = "purple_passion") +
labs(subtitle = "scale_colour_prism(purple_passion)")
p4 <- base + scale_colour_prism(palette = "candy_bright")+
labs(subtitle = "scale_colour_prism(candy_bright)")
p5 <- base + scale_colour_prism(palette = "colorblind_safe")+
labs(subtitle = "scale_colour_prism(candy_bright)")
colour_set_png <- (base + p1+p2)/(p3+p4+p5)
可视化结果如下:
colour_set
你还可以通过如下代码查看其提供的主题:
lengths(ggprism_data$colour_palettes)
lengths(ggprism_data$fill_palettes)
ggprism包提供的shape形状包括default、filled、complete 三种形式,我们通过一个例子进行说明:
# create a base plot to compare shape scales
base <- ggplot(mpg, aes(x = displ, y = cty)) +
geom_point(aes(colour = class, fill = class, shape = class)) +
theme_prism(base_size = 11, base_fontface = "plain", border = TRUE) +
theme(plot.subtitle = element_text(face = "bold"),
legend.position = c(0.8, 0.75),
legend.key.height = unit(10, "pt")) +
coord_cartesian(clip = "off") +
scale_colour_prism(palette = "floral") +
scale_fill_prism(palette = "floral")
p1 <- base
p2 <- base + scale_shape_prism(palette = "default") +
labs(subtitle = "default")
p3 <- base + scale_shape_prism(palette = "filled") +
labs(subtitle = "filled")
p4 <- base + scale_shape_prism(palette = "complete") +
labs(subtitle = "complete")
(p1 + p2) / (p3 + p4)
fill set
这一部分小编就选择常见的图表进行P值添加,更多详细例子,大家可参考官网,这里我们导入一个新包(rstatix),详细代码如下:
library(rstatix)
df_p_val <- rstatix::t_test(ToothGrowth, len ~ supp) %>%
rstatix::add_x_position()
p <- ggplot(ToothGrowth, aes(x = factor(supp), y = len)) +
stat_summary(geom = "col", fun = mean) +
stat_summary(geom = "errorbar",
fun = mean,
fun.min = function(x) mean(x) - sd(x),
fun.max = function(x) mean(x) + sd(x),
width = 0.3) +
theme_prism() +
coord_cartesian(ylim = c(0, 35)) +
scale_y_continuous(breaks = seq(0, 35, 5), expand = c(0, 0))
# normal plot
p + add_pvalue(df_p_val, y.position = 30)
Example of add_pvalue()
df_p_val <- rstatix::t_test(ToothGrowth, len ~ dose, ref.group = "0.5") %>%
rstatix::add_xy_position()
p <- ggplot(ToothGrowth, aes(x = factor(dose), y = len)) +
stat_summary(geom = "col", fun = mean) +
stat_summary(geom = "errorbar",
fun = mean,
fun.min = function(x) mean(x) - sd(x),
fun.max = function(x) mean(x) + sd(x),
width = 0.3) +
theme_prism() +
coord_cartesian(ylim = c(0, 40)) +
scale_y_continuous(breaks = seq(0, 40, 5), expand = c(0, 0))
# with brackets
p1 <- p + add_pvalue(df_p_val, label = "p.adj.signif")
# without brackets
p2 <- p + add_pvalue(df_p_val, label = "p.adj.signif", remove.bracket = TRUE)
p1 + p2
Example02 of add_pvalue()
我们可以通过设置add_pvalue()中的参数对P值样式进行设置。
以上就完成对ggprism包主要绘图函数的设置,接下在通过绘制Graphpad Prism 封面图来告诉ggprism绘制Prism风格图表的便捷性。
library(ggprism)
library(ggnewscale)
df <- data.frame(
agonist = c(1e-10, 1e-8, 3e-8, 1e-7, 3e-7, 1e-6, 3e-6, 1e-5, 3e-5, 1e-4, 3e-4),
ctr1 = c(0, 11, 125, 190, 258, 322, 354, 348, NA, 412, NA),
ctr2 = c(3, 33, 141, 218, 289, 353, 359, 298, NA, 378, NA),
ctr3 = c(2, 25, 160, 196, 345, 328, 369, 372, NA, 399, NA),
trt1 = c(3, NA, 11, 52, 80, 171, 289, 272, 359, 352, 389),
trt2 = c(5, NA, 25, 55, 77, 195, 230, 333, 306, 320, 338),
trt3 = c(4, NA, 28, 61, 44, 246, 243, 310, 297, 365, NA)
) %>%
mutate(log.agonist = log10(agonist)) %>%
pivot_longer(
c(-agonist, -log.agonist),
names_pattern = "(.{3})([0-9])",
names_to = c("treatment", "rep"),
values_to = "response"
) %>%
filter(!is.na(response))
dose_resp <- y ~ min + ((max - min) / (1 + exp(hill_coefficient * (ec50 - x))))
# 可视化绘制
ggplot(df, aes(x = log.agonist, y = response)) +
geom_smooth(
aes(colour = treatment),
method = "nls", formula = dose_resp, se = FALSE,
method.args = list(start = list(min = 1.67, max = 397, ec50 = -7, hill_coefficient = 1))
) +
scale_colour_manual(
labels = c("No inhibitor", "Inhibitor"),
values = c("#00167B", "#9FA3FE")
) +
#这里开始进行ggprism包进行定制化操作
ggnewscale::new_scale_colour() +
geom_point(aes(colour = treatment, shape = treatment), size = 3) +
scale_colour_prism(
palette = "winter_bright",
labels = c("No inhibitor",
"Inhibitor")
) +
scale_shape_prism(
labels = c("No inhibitor",
"Inhibitor")
) +
theme_prism(palette = "winter_bright", base_size = 16) +
scale_y_continuous(
limits = c(-100, 500),
breaks = seq(-100, 500, 100),
guide = "prism_offset"
) +
scale_x_continuous(
limits = c(-10, -3),
breaks = -10:-3,
guide = "prism_offset_minor",
minor_breaks = log10(rep(1:9, 7)*(10^rep(-10:-4, each = 9))),
labels = function(lab) {
do.call(
expression,
lapply(paste(lab), function(x) bquote(bold("10"^.(x))))
)
}
) +
theme(
axis.title.y = element_blank(),
legend.title = element_blank(),
legend.position = c(0.05, 0.95),
legend.justification = c(0.05, 0.95)
) +
labs(x = "[Agonist], M")
Custom Charts
今天小编给大家推荐一个可以绘制「Graphpad Prism」 图表风格的强大绘图包-R-ggprism包,小编这里介绍的肯定是不全面,特别是其主题、刻度、颜色等的介绍。感兴趣的同学可以自行去官网了解情况。而想使用Graphpad Prism软件却因为价格、语言等原因导致无法使用的小伙伴(所谓的破解版就算了哈),可使用此包进行学术风格的图表绘制哈~~。