当前位置:网站首页>【R语言科研绘图】--- 柱状图
【R语言科研绘图】--- 柱状图
2022-08-03 14:06:00 【生信小鹏】
R语言科研绘图——柱状图
前言
使用R语言绘制能够发表的图片,ggplot2是一个很好的选择。并且一些基于ggplot2开发的包,能够达到这个目标。graphpad prism
做出来的图深得大家喜爱,因此本系列的文章就利用R
语言ggprism
这个包进绘制
一、柱状图
柱状图在绘图中经常使用到,例如PCR的数据结果,绘制过程如下
二、使用工具
1.所使用的包
为了科研绘图的美观,所以使用了ggprism这个包的绘制,能够绘制出和graphpad prism类似的效果,便于放在论文中发表
2.数据特征
使用的是R自带的ToothGrowth
数据,包含了三个数据len
是指牙生长的长度supp factor
指的是给予的干扰因素,其中包括了VC和橘子汁dose
指的是给予干扰因素的剂量
3.绘图
3.1 两组均值之间的比较
先把柱状图画出来
代码如下:
df_p_val <- rstatix::t_test(ToothGrowth, len ~ supp) %>%
rstatix::add_x_position()
p <- ggplot(ToothGrowth, aes(x = factor(supp), y = len)) +
stat_summary(geom = "col", fun = mean) +
stat_summary(geom = "errorbar",
fun = mean,
fun.min = function(x) mean(x) - sd(x),
fun.max = function(x) mean(x) + sd(x),
width = 0.3) +
theme_prism() +
coord_cartesian(ylim = c(0, 35)) +
scale_y_continuous(breaks = seq(0, 35, 5), expand = c(0, 0))
加上统计结果
这里使用rstatix
这个包里面的函数进行计算。
rstatix
这个包的特点是能够和tidyverse类似,能够使用管道符进行计算,便于和tidyverse
进行对接
代码如下:
df_p_val <- rstatix::t_test(ToothGrowth, len ~ supp) %>%
rstatix::add_x_position()
p + add_pvalue(df_p_val, y.position = 30)
缺少颜色,加上颜色
p <- ggplot(ToothGrowth,
aes(x = factor(supp), y = len)
) +
stat_summary(geom = "col", aes(fill = factor(supp)),fun = mean) +
stat_summary(geom = "errorbar", colour = 'red',
fun = mean,
fun.min = function(x) mean(x) - sd(x),
fun.max = function(x) mean(x) + sd(x),
width = 0.3) +
theme_prism() +
coord_cartesian(ylim = c(0, 35)) +
scale_y_continuous(breaks = seq(0, 35, 5), expand = c(0, 0))
p
p+ add_pvalue(df_p_val, y.position = 30)
需要注意的是,在添加颜色的时候,是在
stat_summary
当中添加aes(fill = factor(supp)
,如果添加到ggplot
函数中,后面的统计结果又加不上去。
去除图例
因为图片的下方已经有了内容,反而图例显得多余,所以就去除掉图例。使用的是ggplot2
绘制,因此按如下方法即可:
p + theme(legend.position = 'none')+
add_pvalue(df_p_val, y.position = 30)
3.2 多组均值之间的比较
依然使用ToothGrowth
这个数据,比较不同的剂量之间生长的差异。总共有三组不同的剂量,这属于多组比较,这就需要确定一个比照的参照系。
单纯的出图,是这个样子
代码如下:
p <- ToothGrowth %>%
ggplot(aes(x = factor(dose), y = len)) +
stat_summary(geom = "col", fun = mean) +
stat_summary(geom = "errorbar",
fun = mean,
fun.min = function(x) mean(x) - sd(x),
fun.max = function(x) mean(x) + sd(x),
width = 0.3) +
theme_prism() +
coord_cartesian(ylim = c(0, 40)) +
scale_y_continuous(breaks = seq(0, 40, 5), expand = c(0, 0))
p
加上统计数据,两种方式
代码如下
df_p_val <-
rstatix::t_test(ToothGrowth, len ~ dose, ref.group = "0.5") %>%
rstatix::add_xy_position()
p1 <- p + add_pvalue(df_p_val, label = "p.adj.signif")
p2 <- p + add_pvalue(df_p_val, label = "p.adj.signif", remove.bracket = TRUE)
颜色太单一,更换颜色
代码如下:
p <- ToothGrowth %>%
ggplot(aes(x = factor(dose), y = len)) +
stat_summary(geom = "col", fun = mean,aes(fill = factor(dose))) +
stat_summary(geom = "errorbar",
fun = mean,
fun.min = function(x) mean(x) - sd(x),
fun.max = function(x) mean(x) + sd(x),
width = 0.3) +
theme_prism() +
coord_cartesian(ylim = c(0, 40)) +
scale_y_continuous(breaks = seq(0, 40, 5), expand = c(0, 0))
p + theme(legend.position = 'none')
加上统计数据
df_p_val <- rstatix::t_test(ToothGrowth, len ~ dose, ref.group = "0.5") %>%
rstatix::add_xy_position()
p <- ToothGrowth %>%
ggplot(aes(x = factor(dose), y = len)) +
stat_summary(geom = "col", fun = mean,aes(fill = factor(dose))) +
stat_summary(geom = "errorbar",
fun = mean,
fun.min = function(x) mean(x) - sd(x),
fun.max = function(x) mean(x) + sd(x),
width = 0.3) +
theme_prism() +
coord_cartesian(ylim = c(0, 40)) +
scale_y_continuous(breaks = seq(0, 40, 5), expand = c(0, 0))
p1 <- p +theme(legend.position = 'none') + add_pvalue(df_p_val, label = "p.adj.signif")
p2 <- p+theme(legend.position = 'none') + add_pvalue(df_p_val, label = "p.adj.signif", remove.bracket = TRUE)
后记
以上是使用R进行绘制柱状图并且加上统计分析的过程,其中一些细节改变图例
,更换颜色
,导出图片
,改变坐标轴
等等没有细致说明,可以进行细微调节。另外,统计分析使用了rstatix
这个包,能够和tidyverse
很好的结合,后续专门对统计分析进行梳理
边栏推荐
- 背后的力量 | 提升医疗服务“速度“和“温度” 华云数据助力上海国际医学中心加速智慧医院建设
- 数据科学家 Agnis Liukis :在ML领域,初学者踩过的5个坑
- 美国拟对华禁售128层以上NAND Flash制造设备
- 豪威集团发布新款5000万像素图像传感器OV50E
- Left index of all anagrams in leetcode/string (some permutation of s1 string is a substring of s2)
- 你把 浏览器滚动事件 玩明白
- 将移位距离和假设外推到非二值化问题
- MMA安装及使用优化
- Nanoprobes 金纳米颗粒标记试剂丨1.4 nm Nanogold 标记试剂
- js \n\r 换行失败 :【white-space: pre-line;】${} Template Literals
猜你喜欢
随机推荐
想成为网络安全技术爱好者(可能是黑客)的话,需要看什么书?
PostgreSQL 每周新闻 2022-7-27
【MATLAB项目实战】基于CNN_SVM的图像花卉识别
微服务的快速开始(nacos)最全快速配置图解
鸿湖万联扬帆富设备开发板正式合入OpenHarmony主干
【二叉树】从二叉树一个节点到另一个节点每一步的方向
Nanoprobes Ni-NTA-Nanogold——用于 His 标签标记和检测
MySQL数据表操作实战
图形学-粒子系统 (Particle System)
LARS (Least Angle Regression)
《深度学习》-学习笔记-1-机器学习基础
idea找不到class,gradle依赖已经加载,并且class可看
将移位距离和假设外推到非二值化问题
Left index of all anagrams in leetcode/string (some permutation of s1 string is a substring of s2)
哥斯拉加密WebShell过杀软
系统学习Shell之正则表达式
爬虫——代理搭建、爬取视频网站、爬取新闻、BeautifulSoup4介绍、bs4 遍历文档树、bs4搜索文档树、bs4使用选择器
网络通信的过程
参数量仅0.5B,谷歌代码补全新方法将内部生产效率提升6%
你把 浏览器滚动事件 玩明白