前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R-ggplot2 学术箱线图制作

R-ggplot2 学术箱线图制作

作者头像
DataCharm
发布2021-02-22 15:16:08
1.2K0
发布2021-02-22 15:16:08
举报

01. 引言

之前有和群里的小伙伴讨论说"将之前Python-matplotlib 绘制的图用R-ggplot2重新绘制",也得到很多小伙伴的响应

。本期推文就推出箱线图(boxplot)的R-ggplot2 绘制方法,大家可以和 Python-matplotlib 箱线图绘制 这篇文章对比下。

02. R-ggplot2 绘制

(1)数据预览

由于数据和之前的数据一样,且ggplot2 对绘图数据也是有一定要求,现给出数据如下(部分):

其中Type 中主要含有 Teain sample 和 Test sample 两种。

(2)数据可视化

R-ggplot2 绘制箱线图很简单,主要为 geom_boxplot() ,先采用默认的参数绘制 ,代码如下:

代码语言:javascript
复制
plot_pir <- ggplot(data = box_data,aes(x = Type,y = AOD_550nm))+
     geom_boxplot(aes(fill=Type))+
     labs(caption = "Visualization by DataCharm")
plot_pir

结果如下:

当然,你也可以更改 x、y,使其"横向"展示:

代码语言:javascript
复制
plot_pir2 <- ggplot(data = box_data,aes(x = AOD_550nm,y = Type))+
     geom_boxplot(aes(fill=Type))+
     labs(caption = "Visualization by DataCharm")
plot_pir2

结果如下:

虽然默认的格式还不错,但想要符合学术图表要求,还是需要们进行定制化修改,如箱线图的宽、颜色、字体以及一些主题 颜色等,下面我们进行修改。代码如下:

代码语言:javascript
复制
plot_pir2_ed <- ggplot(data = box_data,aes(x = AOD_550nm,y = Type))+
     geom_boxplot(aes(fill=Type),width = 0.4)+
     labs(x ='Values',y=NULL,
          title = "The boxplot of Train data and Tset data",
          subtitle = "Boxplot R-ggplot2 Exercise",
          caption = 'Visualization by DataCharm')+
     #添加图序号(a)
     geom_text(x=2.4,y=2.3,label='(a)',size=8,family='Times_New_Roman',fontface='bold')+
     theme(text = element_text(family = 'Times_New_Roman'),
           axis.text = element_text(family = 'Times_New_Roman',size = 13,face = 'bold'),
           #去除图例标题
           legend.title = element_blank(),
           axis.ticks.length=unit(-0.25, "cm"), 
           #设置刻度label的边距
           axis.text.x = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm")), 
           axis.text.y = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm"))
           )
plot_pir2_ed

涉及到的都是简单的 绘图函数及绘图属性设置。大家可以直接阅读ggplot2的官网(https://ggplot2.tidyverse.org/reference/theme.html) 进行查看。上述代码结果如下:

ggplot2 自身带有多个优秀的 主题风格(theme),下面我们结合主题并设置自定义较利于出版的灰色系颜色,代码如下:

代码语言:javascript
复制
plot  <- ggplot(data = box_data,aes(x = Type,y = AOD_550nm))+
     geom_boxplot(aes(fill=Type),width = 0.4) +
     scale_fill_manual(values = c('grey40','grey80'))+
     #设置轴范围
     scale_y_continuous(limits = c(-.1,2.5),expand = c(0,0))+
     labs(x =NULL,y=NULL,
          title = "The boxplot of Train data and Tset data",
          subtitle = "Boxplot R-ggplot2 Exercise",
          caption = 'Visualization by DataCharm')+
     #添加图序号(a)
     geom_text(x=2.4,y=2.3,label='(a)',size=8,family='Times_New_Roman',fontface='bold')+
     theme_linedraw()+
     theme(text = element_text(family = 'Times_New_Roman'),
           axis.text = element_text(family = 'Times_New_Roman',size = 13,face = 'bold'),
           panel.grid.major = element_line(colour = "gray50",linetype = 'dashed',size=.57), 
           panel.grid.minor = element_line(color = "white"),
           #去除图例标题
           legend.title = element_blank(),
           #加宽图边框
           panel.border = element_rect(size=1),
           #修改刻度线朝里
           axis.ticks.length=unit(-0.25, "cm"), 
           #设置刻度label的边距
           axis.text.x = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm")), 
           axis.text.y = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm"))
           )
plot

知识点:

(1)自定义颜色

代码语言:javascript
复制
scale_fill_manual(values = c('grey40','grey80'))

(2)主题选择:theme_linedraw()

(3)theme()中进行定制化设置

代码语言:javascript
复制
 theme(text = element_text(family = 'Times_New_Roman'),
           axis.text = element_text(family = 'Times_New_Roman',size = 13,face = 'bold'),
           panel.grid.major = element_line(colour = "gray50",linetype = 'dashed',size=.57), 
           panel.grid.minor = element_line(color = "white"),
           #去除图例标题
           legend.title = element_blank(),
           #加宽图边框
           panel.border = element_rect(size=1),
           #修改刻度线朝内
           axis.ticks.length=unit(-0.25, "cm"), 
           #设置刻度label的边距
           axis.text.x = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm")), 
           axis.text.y = element_text(margin=unit(c(0.5,0.5,0.5,0.5), "cm"))
           )

结果如下:

或者如下:

使用 theme_classic() 主题,效果如下:

更多主题设置,大家可以查看官网哦

。(以自己经验来说,还是直接查官网 或者 Google)

03. 总结

R-ggplot2 绘制箱线图还是十分简单的,不仅拥有丰富 的图表元素设置函数、主题以及额外的第三方绘图包。当然,对绘图数据的要求也比较严格。大家觉得和Python 绘制 有什么不同呢?欢迎在文末 读者讨论 或 进群进行交流讨论

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01. 引言
  • 02. R-ggplot2 绘制
  • 03. 总结
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档