ggplot2画各种误差线和森林图
获取更多R语言知识,请关注公众号:医学和生信笔记
医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。
文章目录
- 编一个数据
- geom_errorbarh()和geom_errorbar()
- 先看看`geom_errorbar()`的常规用法
- 再看看`geom_errorbarh()`的常规用法
- geom_pointrange()和geom_linerange()
- geom_crossbar()
森林图最重要的内容之一就是误差线,前面介绍过多种森林图的画法了,今天学习下误差线的各种画法,基于 ggplot2
。
当然也并不是只有森林图中才用误差线,很多图中都用,所以这个方法也是通用的,只要你觉得差不多的误差线,都可以用!
编一个数据
先编造一个数据。数据结构是通用的,既然要画误差线,那肯定得提供最大值和最小值,还要提供均值(或者其他的,肯定是介于最大值和最小值之间的)。
还有一列group
,纯粹是为了给误差线上色用的。如果你提供的是离散型变量,那就提供离散型颜色,如果是数值型变量,就提供连续型颜色。
library(tibble)
options(digits = 2)
df <- tibble(label = LETTERS[1:22],mean = rnorm(22,mean = 1, sd=0.2),lower = mean - 0.1,upper = mean + 0.2,group = c(rep("Group-1",7),rep("Group-2",7),rep("Group-3",8))
)
df# A tibble: 22 x 5label mean lower upper group <chr> <dbl> <dbl> <dbl> <chr> 1 A 1.03 0.928 1.23 Group-12 B 0.741 0.641 0.941 Group-13 C 0.691 0.591 0.891 Group-14 D 0.715 0.615 0.915 Group-15 E 1.06 0.959 1.26 Group-16 F 0.962 0.862 1.16 Group-17 G 0.966 0.866 1.17 Group-18 H 0.775 0.675 0.975 Group-29 I 1.22 1.12 1.42 Group-2
10 J 0.819 0.719 1.02 Group-2
# ... with 12 more rows
加载R包
library(ggplot2)
提供一个基本图:
p <- ggplot(data = df,aes(color = group))
geom_errorbarh()和geom_errorbar()
这两个函数是一样的用法,都是用来画误差线的,看名字就知道只有一点点小小的差别!
h不就代表horizontal吗,水平的,横着的!
geom_errorbar()
:默认是画竖直方向的误差线,比如在条形图上面添加误差线这种画法,需要提供x
,ymin
和ymax
,确定误差线上下两个端点的位置;geom_errorbarh()
:默认是画水平方向的误差线,需要提供y
,xmin和
xmax`,确定误差线左右两个端点的位置。
先看看geom_errorbar()
的常规用法
既然是竖直方向的误差线,那么我们就要提供横坐标x,确定这条误差线的位置,还要提供上下两个端点的位置:ymin,ymax。
p + geom_point(aes(x = label, y = mean),size=5)+geom_errorbar(aes(x = label,ymin = lower, ymax = upper),width = 0.6, # 控制上下两条短横线的长短size = 2 # 控制线条整体粗细)+theme_bw()
再看看geom_errorbarh()
的常规用法
用来画水平方向的误差线,那么需要提供纵坐标y,左右两个端点的坐标:xmin和xmam。
注意控制两边端点处短线长短的参数,一个是
width
,一个是height
!
p + geom_point(aes(x=mean, y=label))+geom_errorbarh(aes(y=label,xmin=lower, xmax=upper),height=0.5, # 控制左右端点两条小竖线的长短size=1)+theme_bw()
为什么说是常规情况呢?
因为某些情况下,其实两个函数可以混用,不管是竖直的和水平的,只要你提供的参数正确,都可以画出来,比如上面那段代码,你把geom_errorbarh
换成geom_errorbar
也是能够运行的。
geom_pointrange()和geom_linerange()
你可能也见过两端没有短线的误差线或者森林图。其实非常简单,直接把端点两端的线的长度变成0不就行了吗?
p + geom_point(aes(x=mean, y=label))+geom_errorbarh(aes(y=label,xmin=lower, xmax=upper),height=0, # 控制左右端点两条小竖线的长短size=1)+theme_bw()
果然是十分完美的!
但既然是ggplot2
系列,那必须优雅!直接给你提供一个geom_pointrange()
函数。
p+geom_pointrange(aes(x=mean,y=label,xmin=lower,xmax=upper),size=1, # 控制线的宽度fatten = 0.6 # 控制点的大小)
那竖直方向的怎么画?是不是还有一个geom_pointrangeh()
函数?
不好意思,还真没有。你至少可以通过2种方法实现。
首先是翻转:
p+geom_pointrange(aes(x=mean,y=label,xmin=lower,xmax=upper),size=1, # 控制线的宽度fatten = 0.6 # 控制点的大小)+coord_flip()
或者在映射横纵坐标时换一下:
p+geom_pointrange(aes(x=label,y=mean,ymin=lower,ymax=upper),size=1, # 控制线的宽度fatten = 0.6 # 控制点的大小)
怎么样,是不是非常简单?
那么还有一个geom_linerange()
函数,顾名思义,只有线,没有点!其实你可以通过给geom_pointrange()
函数设置为点的大小为0实现这种效果。
p+geom_linerange(aes(x=label,y=mean,ymin=lower,ymax=upper),size=1, # 控制线的宽度)
如果你想换成横的怎么办?不用我说了吧,你至少有2种方法!
geom_crossbar()
说实话这个函数我真用得不多。如果不是手贱看了下geom_error()
的帮助文档,我还真不知道!
当你运行?geom_errorbar
的时候,跳出来的竟然是geom_crossbar {ggplot2}
!
果然我还是一个弱鸡!
p+geom_crossbar(aes(x=mean,y=label,xmin=lower,xmax=upper))+theme_bw()
竟然是一个类似箱线图的条形!但是中间竖线位置是mean哦!
这种图形在我的领域见得不多,不知道大家都用在哪里呢?
OK,以上就是在ggplot2
中画各种误差线的方法,学完这个,再配合森林图的教程,请别再告诉我你不会画森林图了!
获取更多R语言知识,请关注公众号:医学和生信笔记
医学和生信笔记,专注R语言在临床医学中的使用,R语言数据分析和可视化。主要分享R语言做医学统计学、meta分析、网络药理学、临床预测模型、机器学习、生物信息学等。
ggplot2画各种误差线和森林图相关推荐
- ggplot作图(条形图 误差线点图 折线图 箱线图 密度图 岭图 小提琴图 云雨图 直方图 PCA图 PcoA图 NDMS图 和弦图 维恩图 时间序列图 系统发育树 饼图 生物区系图 地图 )
文章目录 基本原理 Plot = data + mapping +geometry + (Statistics, Scale, Coordinate) + Details 基础代码 常用图 条形图 点 ...
- R语言:ggplot2画带误差棒的组合折线图教程。
1.cowplotR包的安装,输入代码install.packages("cowplot"),安装成功后,用library("cowplot")调用该R包. 2 ...
- R语言ggplot2画一幅漂亮的哑铃图
在找资料的时候偶然发现的这个图,这个图来源于论文 Russian periphery is dying in movement: a cohort assessment of internal you ...
- python绘制有误差线的折线图
数据如上 import pandas as pd import numpy as np import matplotlib matplotlib.rcParams['backend'] = 'SVG' ...
- matlab条形图添加误差线_在Excel图表中添加误差线和对误差线进行设置的技巧
在Excel图表中,误差线表示图形上相对于数据系列中每个数据点或数据标记的潜在误差量,其通常用于统计或科学记数法数据中,显示相对序列中的每个数据标记的潜在误差或不确定程度.本文介绍在Excel图表中添 ...
- R语言使用forestploter包绘制单组及双组森林图(2)(附有超详细备注)
森林图在论文中很常见,多用于表示多因素分析中的变量与结果变量的比值效应,可以用图示的方法比较直观的绘制出来.既往我们在文章<R语言快速绘制多因素回归分析森林图(1)>已经介绍了怎么绘制森林 ...
- R语言forestplot包绘制森林图
森林图在论文中很常见,多用于表示多因素分析中的变量与结果变量的比值效应,可以用图示的方法比较直观的绘制出来.既往我们在文章<R语言快速绘制多因素回归分析森林图(1)><R语言使用fo ...
- ggplot2箱线图的美化之路: 箱线图到直方图加散点图再加误差线的美化之路
如何把你的箱线图变成plus版? 箱线图到直方图加散点图再加误差线的美化之路 前言 数据准备 箱线图美化 01 一个平平无奇的箱线图 02 给箱线图加上误差线 03 加上散点的信息 04 去除网格线和 ...
- python画误差棒_给妹子讲python-S02E06matplotlib散点图、频次直方图与误差线图
微信公众号: python数据科学家 [要点抢先看] 1.散点图的画法举例 2.频次直方图的画法举例 3.误差线图的画法举例 [妹子说]今天我们继续学习matplotlib绘图的相关内容嘛~ 对,在这 ...
最新文章
- 【Matlab与线性代数】Matlab中对数组元素引用方法总结
- BigDecimal的使用举例,包括阶乘的相加求法思路
- 查看apache连接数及apache工作原理
- 程序员面试金典 - 面试题 05.02. 二进制数转字符串(浮点型 转 二进制小数,乘2取整)
- java中paint方法和paintComponent方法的不同
- selenium-行为链-ActionChains-0223
- 基于CentOS7,MySQL5.7的高可用MHA架构搭建实战
- 算法专题(一)1.1 希尔排序,快速排序
- 区块链共识机制优缺点对比都是什么
- 【Java】【Fulme】Flume-NG源代码阅读之SpoolDirectorySource
- 正态分布的概率密度函数python_python绘制正态分布及三大抽样分布的概率密度图像...
- Gulp学习笔记(黑马教程)
- 看单片机原理图-外部FLASHW25Q64
- 网易云易盾正式成为“中国短视频与直播联盟”常务理事
- Echarts图例位置 - legend属性
- 对销售代表的100个忠告
- T-SQL - 习题02_将数据表year|month|amount查询成year|m1|m2|m3|m4的样式
- Spark RDD 极简教程
- 高斯消去法解线性方程组的fortran程序实现
- centos7 搭建主机信任、重定向、挂载
热门文章
- wsl迁移报错 由于虚拟磁盘系统限制
- 易企秀 伪静态 linux,一秀最新易企秀带采集5月最新完美版 带素材管理 易企秀IIS伪静态规则...
- miui android 版本下载安装,MIUI论坛
- Redhat 5.4 Oracle 10g RAC Openfiler+Multipath + RAW+ ASM 安装文档
- 可以使用计算机处理涉密文件,涉密软盘进行格式化处理后,可以降低密级使用。()...
- 34. 指针和字符串
- 男扮女装参加超级女声的经历<转>
- PE详解 - DOS文件头、PE文件头、节表和表详解
- Android 短信拦截及用途分析
- 预产期计算器在线计算生男生女计算机,预产期计算器生男生女的方法介绍