早上看到Y叔推文用ggplot2出GraphPad prism的图。我虽然喜欢ggplot,但是文章的最终出图很多还是用graphpad prism来做的,但是要统一风格和各种设置,每次都要调整很久。如果能够用R来达到跟prism相似的效果,那就可以直接用R了。先来试试看。
安装ggprism:
1
| remotes::install_github("csdaw/ggprism")
|
推文举的例子
1 2 3 4 5 6 7 8 9 10 11 12
| library(ggplot2) library(ggprism) library(patchwork)
p1 <- ggplot(ToothGrowth, aes(x = factor(dose), y = len)) + stat_summary(aes(fill = factor(dose)), na.rm = TRUE, geom = "col", fun = mean, colour = "black", size = 0.9) + scale_y_continuous(limits = c(0, 30), expand = c(0, 0))
p2 <- p1 + theme_prism(base_size = 14)
p1 + p2
|
结果图:
我用自己的数据
绘图:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| library(ggplot2) library(ggprism) library(patchwork) dat <- readxl::read_xlsx("data.xlsx") dat$trt <- factor(dat$trt, levels = c("control", "A", "B", "A+B")) my_comparisons <- list( c("control", "A"), c("A", "A+B"))
p1 <- ggplot(data = dat, aes(x = trt, y = value))+ stat_summary(fun.data = 'mean_sd', geom = "errorbar", colour = "black", width = 0.25, size = 0.8, position = position_dodge( .9))+ stat_summary(aes(fill = factor(trt)), na.rm = TRUE, geom = "col", fun = mean, colour = "black", size = 0.9) + stat_compare_means(comparisons = my_comparisons, method = "t.test", label.y = c(2.8, 3))+ scale_fill_brewer(palette ="Greys")+ facet_wrap("CellType")
p2 <- p1+ theme_prism(base_size = 14)
p1+p2
|
结果:
存在的问题
总的来看,效果还可以,但是还不够。
统计的部分还没有调好,线条怎么调粗一些。
prism可以在柱状图里面填充线条(或其他图案)。
如果R也可以达到类似的效果,我一定会想办法写一个适用于我自己的完整的实验结果出图R代码出来。
网上找到一个可以达到填充图案效果的包,parttenplot,但是不太理想。不管是代码,还是效果都没有得到很好的解决。
再研究研究,希望能够好的解决这些,已经离目标更近一步了。