2021-08-27 02:22:06, 多层组学定制服务 上海欧易生物医学科技有限公司
点击上方“蓝色字体”关注我们
蛋白组学、代谢组学服务专家
小荷才露
箱线图、小提琴图和蜂窝图,想必已经很常见了,之前小鹿也介绍了很多(请戳【情人节】R语言—小提琴图的浪漫邂逅)。今天,分享一个新型可视化图--云雨图,那先看下效果图感受下吧~
云雨图,顾名思义,像云和雨一样的图。由两个部分组成:上图像云,本质上是小提琴的一半;下图像雨,本质上是蜂窝图的一半,主要用于数据分布的展示。那这样的图如何绘制的?跟小编一起学习吧~
小试牛刀
今天,小编介绍两种方法绘制云雨图,让大家充分学习,并上手自己绘制。
第一种,用ggplot扩展包gghalves。以iris数据集为例:
# 加载依赖包,如未安装,请先安装,如上代码。library(gghalves)library(tidyverse)# Species因子化,后续作图需要iris$Species <- iris$Species %>% factor(.,levels=unique(.))head(iris)# Sepal.Length Sepal.Width Petal.Length Petal.Width Species# 1 5.1 3.5 1.4 0.2 setosa# 2 4.9 3.0 1.4 0.2 setosa# 3 4.7 3.2 1.3 0.2 setosa# 4 4.6 3.1 1.5 0.2 setosa# 5 5.0 3.6 1.4 0.2 setosa# 6 5.4 3.9 1.7 0.4 setosa
向右滑动查看更多
绘制云雨图,需要用到gghalves的两个函数,geom_half_violin()和geom_half_dotplot(),分别绘制“云”和“雨”。
# 先绘制小提琴的一半ggplot2::ggplot(iris , aes(x = Species, y = Sepal.Length, fill = Species))+gghalves::geom_half_violin(aes(fill = Species),position = position_nudge(x = .15, y = 0),adjust=1.5, trim=FALSE,colour=NA, side = ''r'')
向右滑动查看更多
# 再绘制蜂窝图的部分ggplot2::ggplot(iris , aes(x = Species, y = Sepal.Length, fill = Species))+gghalves::geom_half_violin(aes(fill = Species),position = position_nudge(x = .15, y = 0),adjust=1.5, trim=FALSE,colour=NA, side = ''r'') +gghalves::geom_half_dotplot(aes(fill = Species), method="histodot", stackdir="down",dotsize = 0.55, position=position_nudge(x = .15, y = 0),binwidth = 0.15, colour = NA)
向右滑动查看更多
# 最后旋转坐标ggplot2::ggplot(iris , aes(x = Species, y = Sepal.Length, fill = Species))+gghalves::geom_half_violin(aes(fill = Species),position = position_nudge(x = .15, y = 0),adjust=1.5, trim=FALSE,colour=NA, side = ''r'') +gghalves::geom_half_dotplot(aes(fill = Species), method="histodot", stackdir="down",dotsize = 0.55, position=position_nudge(x = .15, y = 0),binwidth = 0.15, colour = NA) +ggplot2::coord_flip() +ggthemes::theme_base() # 换一个主题,符合科研风格。需安装ggthemes包
向右滑动查看更多
那么,这样就可得到前言例图啦,很简单有没有。
再介绍一种,更简单的。利用see包来绘制,包里有个函数geom_violindot(...),绘制云雨图一步到位。
# 安装see包library(see)p <- ggplot2::ggplot(iris, aes(x = Species,y =Sepal.Length,fill = Species)) +see::geom_violindot(color = NA, #去除小提琴边框dots_color = NA, #去除圆点边框dots_size = 0.5, #圆点大小binwidth = 0.15, #窗口bin的宽度scale="area", #云图以“面积”来缩放,还有"count" or "width"trim = F #是否过滤头尾数据,默认为TRUE) +ggthemes::theme_base()+ #换主题ggplot2::coord_flip()+ #旋转换坐标轴see::scale_fill_material() #修改填充颜色
向右滑动查看更多
这样子的图,是不是有点云雨图的味道啦~~
小巧微琢
由于gghalves和see包都是ggplot的扩展包,返回的结果均为ggplot对象,这在对后续的图形优化、多图组合上,有很大的便利性。比如,我们需要做不同组数据之间的比较分析,那该怎么办呢?莫慌,使用ggsignif包的geom_signif()函数就能轻松搞定,如下:
# 安装ggsigniflibrary(ggsignif)enhence_p <- p + ggsignif::geom_signif(comparisons = list(c("versicolor", "setosa"),c("versicolor", "virginica"),c("setosa", "virginica")), # 设置比较组y_position = c(8.0, 8.4, 8.8), # 设置显著性标志所在的y轴坐标map_signif_level = c("***" = 0.001, "**" = 0.01, "*" = 0.05)) # 匹配显著性程度标识(星号*)print(enhence_p)
向右滑动查看更多
另外,多图拼接也是很方便,用到patchwork包来实现。这里将上述两图进行拼接。
## 安装patchworklibrary(patchwork)multi_p <- p + see::theme_modern() & enhence_p + see::theme_modern()multi_p# 下面写法也可,并对分页有更多控制p1 <- p + see::theme_modern(); p2 <- enhence_p + see::theme_modern()list(p1, p2) %>% patchwork::wrap_plots(., ncol=2)
向右滑动查看更多
除此之外,我们可能需要进一步美化组合图,则需要对图形元素进行更多修改,如左图的legend有点多余,右图的Y轴坐标和坐标名也是多余的,这个时候就需要进行删除。解决方案就是可以利用ggplot2::theme()进行进一步精修,这里由于篇幅,不做展开了。如果各位看官老师需要了解,请在文末留言,后期还有更多大家想看的操作分享哦~
意犹未尽
前段时间,小编在做网红产品空间代谢组和空间转录组联合分析的研发工作时,需要展现切片样本全区域高表达代谢物的分布情况,正好也用到了云雨图,范例如下:
# 由于函数整合到sce对象中,仅展示最终代码crplot <- cloudrainplot(sce, # sce为SingleCellExperiment object or dataframedots_color = ggplot2::alpha("grey50", 0),dots_size = 1.5, binwidth = 20, scale="width")crplot
数据可视效果还是不错的哟!其实,数据比较大的时候,作出的图有点像山脉图,这个后期小鹿会继续分享的~~
好了,这期分享就到这里,下期再见!各位看官有什么想学习或了解的,数据分析、可视化或生信组学方向都可后台留言我们哟~
文末看点 鹿明生物
上海鹿明生物科技有限公司多年来,一直专注于生命科学和生命技术领域,是国内早期开展以蛋白组和代谢组为基础的多层组学整合实验与分析的团队。
同时,鹿明生物线上学习平台易明学院也拥有众多生信教程,欢迎访问:https://www.yimingxueyuan.com/
猜你还想看
◆生信课程:这个R包不太冷系列五——降维分析
◆生信课程:这种图竟比条形图、箱线图和抖动图展现度更优?
◆生信课程:手把手教你如何从iprox上自动批量下载原始数据
◆生信课程:这个分析不太难系列(一)——方差分析
◆生信课程:一行代码,轻松绘制动态关系网络图(Jaal 库)
◆生信课程:我要如何才能拯救你!我的论文!我的实验数据!
END
段小前 撰文
欢迎转发到朋友圈
本文系鹿明生物原创
转载请注明本文转自鹿明生物
我知道你在看哟
点“阅读原文”了解更多
07-08 汉尧
化妆品原料神经酰胺AP的杂质分离07-08 YoYo老师
2026年起食用油必检项目,乙基麦芽酚检测方法大揭秘07-07 DIKMA
7月9日 | 2026(沈阳)制药行业质量控制技术大会,邀您参加07-07 DIKMA
“芯”升级,新“净”界 | 安捷伦光谱 PFA 耗材助力半导体痕量分析07-07 安捷伦科技
化妆品中的 PFAS 如何精准检测?安捷伦一站式解决方案助力应对新监管时代07-07 安捷伦科技
为消费者“胺”全把关!材料中甲酰胺分析方案07-07 安捷伦科技
从研发走向质量控制——安捷伦 MAM 方案助力生物药分析能力升级07-07 安捷伦科技
安捷伦 GC/MS 赋能诺泰诺和多肽药物手性氨基酸异构体检测07-07 安捷伦科技
从手动测角到全自动质控:镀创光电如何重塑精密检测信任 | 千里“追光”之旅07-07 安捷伦科技
议题征集 参会有礼|AI 驱动植物代谢与行业创新研讨会倒计时开启07-07 安捷伦科技
年中献礼!即刻领取安捷伦《实验室 GMP 合规与检查实操指南》07-07 安捷伦科技
会议邀请 | Tescan 邀您共赴 IPFA 2026 亚洲半导体盛会07-07 Tescan中国
【文献速递】水稻钙调素蛋白OsCML27精细调控OsRbohB介导ROS信号通路,平衡水稻干旱胁迫响应07-07
邀请函 | PCT 逛展必打卡!DKSH大昌华嘉展位:特装3 ~07-06 大昌华嘉
百欧林全新Sigma系列力学法表面张力仪重磅发布!07-06 大昌华嘉
从生物标志物发现到精准医疗:Orbitrap Astral Zoom赋能转化医学全流程07-06 飞飞
载誉雄安!GE医疗连夺两项大奖,量子平台创新影像链,Vscan Air加速助力基层诊疗能力07-06
会议邀请 | InterPore China 2026:Tescan邀您共探多孔介质与油气行业全表征07-06 Tescan中国
Solentim AEC FL 荧光功能已就绪,等你来升级!07-06 诺佤百奥NovaBio











