如何把你的箱线图变成plus版? 箱线图到直方图加散点图再加误差线的美化之路

  • 前言
  • 数据准备
  • 箱线图美化
    • 01 一个平平无奇的箱线图
    • 02 给箱线图加上误差线
    • 03 加上散点的信息
    • 04 去除网格线和背景,更改颜色
    • 05 箱线图变带误差线、散点的柱形图
  • 参考资料

前言

由于自己科研工作的需要,经常需要画一些箱线图,比较2个样本的基因表达量啊什么的,这个时候,就会想说如何实现箱线图的美化,以及最近看到一个把正常基因表达量的箱线图画成了直方图加散点图再加误差线的形式,因此想趁空闲来写下我的ggplot2的箱线图的美化之路。

数据准备

首先先生成一个测试数据集

data <- c(rnorm(200))
name <- c(rep("control", 99),rep("treat",101))
res <- data.frame(data,name)

得到的数据集就是这样子的:

箱线图美化

01 一个平平无奇的箱线图

library(ggplot2)
g <- ggplot(res, aes(name, data))+geom_boxplot(aes(fill = name ))

02 给箱线图加上误差线

library(ggsignif)
compared_list = list(c("control", "treat"))  #设定比较组
g + geom_signif(comparisons = compared_list, test = t.test, step_increase = 0.2)


如果想要p值以星号来显示显著性,可以增加一个参数:
map_signif_level=T

g <- g + geom_signif(comparisons = compared_list, test = t.test, step_increase = 0.2, map_signif_level=T)

03 加上散点的信息

g <- g + geom_jitter(aes(fill=name),width =0.2,shape = 21,size=1)

04 去除网格线和背景,更改颜色

选颜色的时候,为了解决我的纠结和拯救大家谜一般的审美,这里祭出我的ggsci大法。

ggsci是ggplot的主题包,它提供一系列高质量的调色板,其灵感来自于科学期刊、数据可视化库、科幻电影和电视节目中使用的颜色。ggsci中的调色板可以作为ggplot2 scales使用。

不过我这里只有2个组,完全不能体现出它的便利和美,但真的很推荐大家尝试,一句get杂志同款颜色,顺带拯救审美。

#去除网格线和背景
g <- g+ theme_bw() + theme(panel.grid.major =element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(),axis.line = element_line(colour = "black"))
#更换颜色
library(ggsci)
g <- g + scale_fill_npg()


反正我觉得是有美了的……

05 箱线图变带误差线、散点的柱形图

首先需要计算下数据

library(Rmisc)
input <- summarySE(res, measurevar="data", groupvars=c("name"))

得到的input就是这样子:

这里看到均值一个大于0,一个小于0,画成柱形图会很尴尬,所以我稍微换了个数据……

data <- c(rnorm(99,10,3),rnorm(101,20,5))
name <- c(rep("control", 99),rep("treat",101))
res <- data.frame(data,name)
input <- summarySE(res, measurevar="data", groupvars=c("name"))
g <- ggplot(input, aes(name, data, fill=name)) + geom_bar(position=position_dodge(), stat="identity") +geom_errorbar(aes(ymin=data-se, ymax=data+se),width=.3, # 设置误差线的宽度 position=position_dodge(.9)) +  theme_bw() +theme(panel.grid.major =element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(),axis.line = element_line(colour = "black"))


最后要把散点和显示显著性的给加上,这里其实就是在ggplot中2个图叠加,不过2个图共用坐标轴。这里需要告诉ggplot后面加的geom是基于一个不同的数据集

g <- g + geom_signif(comparisons = compared_list, test = t.test, step_increase = 0.2)  +geom_jitter(data = res, aes(name,data,fill=name),width =0.2,shape = 21,size=1) +geom_signif(data = res, aes(name,data),comparisons = compared_list, test = t.test, step_increase = 0.2)

得到结果图:

最后倔强地美化一下:

g <- g +  scale_fill_aaas() +labs(subtitle="My final figure",x="Sample Name", y="Sample size")


好了,快乐下班,如果还是觉得不ok,这里推荐Adobe Illustrator,神器up!

参考资料

在R中使用ggplot2覆盖两个图

教你用科学杂志喜欢的配色作图——R包ggsci

ggplot2箱线图的美化之路: 箱线图到直方图加散点图再加误差线的美化之路相关推荐

  1. 美图秀秀-拼图效果,UIView的clipsTobounds (后续的回头再加)

    最近在做个拼图美颜的功能,在UIScrollView中实现 self.clipsToBounds = NO的时候不剪切子视图,当属性为YES的时候,超过父类视图范围的子视图部分被剪切,默认值是NO,但 ...

  2. python画误差棒_给妹子讲python-S02E06matplotlib散点图、频次直方图与误差线图

    微信公众号: python数据科学家 [要点抢先看] 1.散点图的画法举例 2.频次直方图的画法举例 3.误差线图的画法举例 [妹子说]今天我们继续学习matplotlib绘图的相关内容嘛~ 对,在这 ...

  3. python 分布图_python数据分布型图表柱形分布图系列带误差线的柱形图

    柱形分布图系列 柱形分布图系列 使用柱形图的方式展示数据的分布规律: 可以借助误差线或散点图: 带误差线的柱形图就是使用每个类别的均值作为柱形的高度: 再根据每个类别的标准差绘制误差线: 缺点:无法显 ...

  4. 简析条形图(bar plot)上的误差线(转载)

    http://office.microsoft.com/zh-CN/products/excel/rz001190626.aspx?lc=zh-cn&section=10 误差线指示每个数据点 ...

  5. matlab bar中画显著性水平线,科学网—简析条形图(bar plot)上的误差线 - 于淼的博文...

    经常会遇到有人问条形图上误差线画什么的问题,有人说标准差(sd),有人说标准误(se),有的直接说置信区间(CI),其实这倒也不是什么大问题,你按什么画就在文章中注明就是了.后来看到JCB上有一篇科普 ...

  6. 利用R语言实现箱线图的绘制与美化(正态分布随机数生成、显著性检验、误差线添加、图例、背景更改)

    问题:按照正态分布随机生成A(平均值= 50,sd = 3),B(平均值= 45,sd = 2),C(平均值= 40,sd = 5)和D(平均值= 52)作为4种甜瓜的产量数据 ,sd = 2),并绘 ...

  7. python画统计图怎么在右上角表示哪条线代表什么_Python-matplotlib统计图之箱线图漫谈...

    (1) 箱线图,又称箱形图(boxplot)或盒式图,不同于一般的折线图.柱状图或饼图等传统图表,只是数据大小.占比.趋势等等的呈现,其包含一些统计学的均值.分位数.极值等等统计量,因此,该图信息量较 ...

  8. ggplot作图(条形图 误差线点图 折线图 箱线图 密度图 岭图 小提琴图 云雨图 直方图 PCA图 PcoA图 NDMS图 和弦图 维恩图 时间序列图 系统发育树 饼图 生物区系图 地图 )

    文章目录 基本原理 Plot = data + mapping +geometry + (Statistics, Scale, Coordinate) + Details 基础代码 常用图 条形图 点 ...

  9. ggplot2画各种误差线和森林图

    获取更多R语言知识,请关注公众号:医学和生信笔记 医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化.主要分享R语言做医学统计学.meta分析.网络药理学.临床预测模型.机器学习.生 ...

最新文章

  1. Nacos 集群部署模式最佳实践
  2. 怎么向后删除?(删除光标后的字符)(按delete键)
  3. 【学术相关】专家:硕博研究生阶段还是要发SCI,取消了学生就不干活了
  4. nginx log_format 中的变量
  5. js 数组遍历符合条件跳出循环体_C++模拟面试:从数组“紧凑”操作说开来
  6. 数据库一些开发者了解的操作
  7. 如何才能快速提高自己的能力?!
  8. 3、ARM嵌入式系统:按键 初始化
  9. wpa_supplicant 使用
  10. linux cat用法退出,Linux常用命令 - cat命令用法详解
  11. 《计算机网络教程》(微课版 第五版)第四章 网络层与网络互连 课后习题及答案
  12. css字体设置为白色,css怎么将字体设置成白色
  13. C1任务01 植物大战僵尸存档修改
  14. 联想开机启动项按哪个_联想台式电脑设置第一启动的快捷键是什么
  15. JavaScript 是怎么运行起来的?
  16. ssd的smt_联合评测: Optane SSD 在SmartX 超融合 Oracle 场景下的性能表现
  17. 智慧医院预约及支付平台建设方案
  18. prometheus监控windows系统
  19. 【开源数据集】无人机室内室外,视觉-惯性-激光雷达-UWB
  20. 微软语音合成助手 TTS-VUE 文字转语音工具

热门文章

  1. 姑苏拟秋裤邻近建楼房 摩天大楼泡沫隐现
  2. MyBatis研习录(12)——MyBatis一级缓存
  3. Python:实现lorenz transformation 洛伦兹变换算法(附完整源码)
  4. 查看tom猫进程linux,分享|在 Linux 命令行中观看彩虹猫来稍事休息
  5. 逆向爬虫32 某视频刷播放
  6. Python多进程之刷小网站浏览量。
  7. 应用软件——DFM分析软件
  8. 界面上展示svg图片_使用SVG创建SciFi用户界面元素
  9. pytest Error running ‘tests‘: Can‘t run remote python interpreter: Can‘t get remote credentials for
  10. 李白的四首诗鸿蒙胜安卓,人工智能与诗词高手,模仿《静夜思》各写首诗,竟是人工智能胜...