只会{ggplot2}作图不太够,快来试试这个“牛图”—— {cowplot}!

学术   2024-07-01 17:50   浙江  
今天小编介绍一个超实用R包{cowplot},包含很多功能,可以快速提高大家的作图技巧

第一步,安装并载入R包:

install.packages("cowplot")

library(cowplot)
library(ggplot2) # 需提前安装:install.packages("ggplot2")
第二步,示范数据准备。从R自带数据集diamonds中抽取500行,作为后续画图的数据:

set.seed(1112)
mydata <- diamonds[sample(nrow(diamonds), 500), ]

summary(mydata)

首先,介绍R包{cowplot}中包含的几种图片主题。

先画一个默认{ggplot}风格的箱形图:

set.seed(1)
p1 <- ggplot(mydata, aes(cut, carat, colour = cut)) +
  geom_boxplot() +
  geom_jitter(width = 0.2) +
  theme(legend.position = "none")
p1

再来,使用{cowplot}中的几个theme_*()函数画图:

p2 <- ggplot(mydata, aes(carat, price, colour = cut)) +
  geom_jitter() +
  theme_cowplot() +
  theme(legend.position = "none")
p2

p3 <- ggplot(mydata, aes(carat)) +
  geom_histogram(colour = "grey") +
  theme_half_open()
p3

p3_1 <- ggplot(mydata, aes(price)) +
  geom_histogram(colour = "grey") +
  theme_half_open() +
  background_grid() +
  theme(axis.text.x = element_text(angle = 90))
p3_1

p4 <- ggplot(mydata, aes(carat, fill = cut)) +
  geom_density(colour = "grey", alpha = 0.6) +
  theme_minimal_grid()
p4
 
 
 

上述代码中,theme_half_open()/theme_cowplot()background_grid()theme_minimal_grid()均为{cowplot}中的函数。

假如需要将p1,p2,p3三张图拼在一起,简单一个函数搞定:

plot_grid(p2, p3, p1)

再进一步修饰拼好的图片:

plot_grid(p2, p3, p1,
          ncol = 3,
          labels = c("A""B""C"),
          rel_widths = c(111.2))

上述代码中,labels加上三个亚图片的标签,rel_widths精准调整三个亚图的宽度。

假如需要在图片的任意位置加上文本内容,也很容易:

p2 +
  draw_label("Diamonds", x = 2, y = 5000,
             color = "pink2", size = 50, angle = 30)

上述代码中,draw_label()实现了在图片上添加文字的功能。

不止文字,在图片中加图片也可以轻松实现:

ggdraw(p2) + # A图
  draw_plot(p3 + panel_border() , # 添加B图
            x = 0.6, y = 0.1# 图片位置
            width = 0.35, height = 0.3) + # 图片大小
  draw_plot(p3_1 + panel_border() , # 添加C图
            x = 0.1, y = 0.65,
            0.350.3) +
  draw_plot_label(
    c("A""B""C"),
    x = c(00.650.15),
    y = c(10.450.99),
    size = 12)


好啦,今天的内容就到这里。如果有帮助,记得分享给需要的人



参考文献


[1]. https://wilkelab.org/cowplot/articles/themes.html


公众号的线上课程

1. 《R语言和统计新手课程》

2. 《回归:从入门到进阶》

3. 《线性混合模型和纵向数据分析》

【通过公众号菜单栏--线上课程】


统计咨询

《服务介绍和经典合作案例》


公众号核心成员的成果发表

《SCI医学1区影响因子9分论文》


公众号核心成员担任SCI杂志Associate Editor!
《JAD杂志Associate editor》
《Frontiers in Neuroscience, Frontiers in Neurology and Frontiers in Psychiatry杂志的神经退行性病变板块》


加入我们
成为我们的课程推广大使,赢取高额回报!
【通过公众号菜单栏--联系我们--招推广员】


▌本文由R语言和统计首发
▌课程相关咨询可添加R师妹微信: kefu_rstats
▌编辑:June
▌邮箱:contact@rstats.cn
▌网站:www.rstats.cn
我们致力于让R语言和统计变得简单!




R语言和统计
我们定期更新与R有关的内容,比如R编程基础,作图,实用R包的解读,统计学基础知识,前沿的统计方法,机器学习等等。
 最新文章