作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源。

严涛老师的绘图教程还有:

gganimate |诺奖文章里面的动图绘制教程来了!!

ggplot2学习笔记之图形排列

R包ggseqlogo |绘制序列分析图

ggplot2高效实用指南 (可视化脚本、工具、套路、配色)

简介

ggridges包主要用来绘制山峦图。尤其是针对时间或者空间分布可视化具有十分好的效果。ggridges主要提供两个几何图像函数:

  • geom_ridgeline(): 主要绘制山脊线图

  • geom_density_ridges():主要绘制密度山脊线图

具体用法可以参考官方文档:

https://cran.r-project.org/web/packages/ggridges/vignettes/introduction.html

geom_ridgeline()

library(ggridges)
library(tidyverse)
# grid.arrange来自于gridExtra包,可以同时拼图多个ggplot2对象
library(gridExtra)my_data <- data.frame(x=1:5, y=rep(1,5), height=c(0,1,-1,3,2))
plot_base <- ggplot(my_data, aes(x, y, height=height))# 默认负值不显示,除非指定min_height参数grid.arrange(plot_base+geom_ridgeline(),plot_base+geom_ridgeline(min_height=-2), ncol=2)

geom_density_ridges()

geom_density_ridges()函数首先会根据数据计算密度然后绘图,此时美学映射height没有必要写入函数中。下面使用lincoln_weather数据集。

# creates a vector of n equally spaced colors along the
# Matplolib 'viridis' color map# also designed to be perceived by readers with the most common form of color blindness
#  scale_fill_viridis函数来源于此包,
# 其参数 option用于设置颜色 "magma" (or "A"), "inferno" (or "B"), "plasma" (or "C"),
and "viridis" (or "D", the default option).
# ?viridis可以查看其具体含义library(viridis)
head(lincoln_weather[ ,1:4])## # A tibble: 6 x 4
##   CST      `Max Temperature [F]` `Mean Temperature [F]` `Min Temperature ~
##   <chr>                    <int>                  <int>              <int>
## 1 2016-1-1                    37                     24                 11
## 2 2016-1-2                    41                     23                  5
## 3 2016-1-3                    37                     23                  8
## 4 2016-1-4                    30                     17                  4
## 5 2016-1-5                    38                     29                 19
## 6 2016-1-6                    34                     33                 32# x后的值用 ` (反引号)括起,是因为列名字中存在空格和特殊字符,需要特殊对待
# fill = ..x.., double dots是ggplot2的一种特殊识别符,用来区分定义的和计算的美学参数
# 这里指用横轴的数据着色ggplot(lincoln_weather, aes(x=`Mean Temperature [F]`, y=`Month`, fill=..x..))+geom_density_ridges_gradient(scale=3, rel_min_height=0.01, gradient_lwd = 1.)+scale_x_continuous(expand = c(0.01, 0))+ # 扩展下横轴和纵轴scale_y_discrete(expand = c(0.01,0))+scale_fill_viridis(name="Temp. [F]", option = "C")+labs(title="Temperature in Lincoln NE",subtitle="Mean temperature (Fahrenheit) by month for 2016\nData:Orogin CSV from the Weather Underground ")+theme_ridges(font_size = 13, grid = FALSE)+theme(axis.title.y = element_blank())

cyclinal scales

为了使得ggridges绘制的图形可视化效果最好,同时为了减少用户对颜色设置的困难,作者提供了cyclinal scales用于颜色轮转映射。

ggplot(diamonds, aes(x=price, y=cut, fill=cut))+geom_density_ridges(scale=4)+scale_fill_cyclical(values = c("blue", "green"))+theme_ridges(grid = FALSE)

默认的,cyclinal scales为了防止误解是不绘制图例的,但是可以通过选项guide="legend"添加图例。

ggplot(diamonds, aes(x=price, y=cut, fill=cut))+geom_density_ridges(scale=4)+scale_fill_cyclical(values = c("blue", "green"), guide="legend")+theme_ridges(grid = FALSE)

ggplot2一样,图例是可以修改的,其他参数比如大小、透明度、形状等都是可以通过cyclinal scales修改。

ggplot(diamonds, aes(x=price, y=cut, fill=cut))+geom_density_ridges(scale=4)+scale_fill_cyclical(values = c("blue", "green"), guide="legend",labels=c("Fair"="blue", "Good"="green"),name="Fill colors")+theme_ridges(grid = FALSE)

再来2个示例

不做解释了,如果想重现就把代码拆解开,按需修改。一句句话单独拆开运行,理解其操作内容。

library(dplyr)
library(forcats)
Catalan_elections %>%mutate(YearFct = fct_rev(as.factor(Year))) %>%ggplot(aes(y = YearFct)) +geom_density_ridges(aes(x = Percent, fill = paste(YearFct, Option)),alpha = .8, color = "white", from = 0, to = 100) +labs(x = "Vote (%)",y = "Election Year",title = "Indy vs Unionist vote in Catalan elections",subtitle = "Analysis unit: municipalities (n = 949)",caption = "Marc Belzunces (@marcbeldata) | Source: Idescat") +scale_y_discrete(expand = c(0.01, 0)) +scale_x_continuous(expand = c(0.01, 0)) +scale_fill_cyclical(breaks = c("1980 Indy", "1980 Unionist"),labels = c(`1980 Indy` = "Indy", `1980 Unionist` = "Unionist"),values = c("#ff0000", "#0000ff", "#ff8080", "#8080ff"),name = "Option", guide = "legend") +theme_ridges(grid = FALSE)

library(DAAG) # for ais dataset
ais$sport <- factor(ais$sport,levels = c("B_Ball", "Field", "Gym", "Netball", "Row", "Swim", "T_400m", "T_Sprnt", "Tennis", "W_Polo"),labels = c("Basketball", "Field", "Gym", "Netball", "Row", "Swim", "Track 400m", "Track Sprint", "Tennis", "Water Polo")
)ggplot(ais, aes(x=ht, y=sport, color=sex, point_color=sex, fill=sex)) +geom_density_ridges(jittered_points=TRUE, scale = .95, rel_min_height = .01,point_shape = "|", point_size = 3, size = 0.25,position = position_points_jitter(height = 0)) +scale_y_discrete(expand = c(.01, 0)) +scale_x_continuous(expand = c(0, 0), name = "height [cm]") +scale_fill_manual(values = c("#D55E0050", "#0072B250"), labels = c("female", "male")) +scale_color_manual(values = c("#D55E00", "#0072B2"), guide = "none") +scale_discrete_manual("point_color", values = c("#D55E00", "#0072B2"), guide = "none") +guides(fill = guide_legend(override.aes = list(fill = c("#D55E00A0", "#0072B2A0"),color = NA, point_color = NA))) +ggtitle("Height in Australian athletes") +theme_ridges(center = TRUE)

还有很多用法有兴趣的可以查看官方文档https://cran.r-project.org/web/packages/ggridges/vignettes/introduction.html和https://cran.r-project.org/web/packages/ggridges/vignettes/gallery.html)继续学习。

那你知道单细胞基因表达中这个图怎么画了吗?

如果不知道,可能你需要来参加单细胞转录组的课程了!!!

猜你喜欢

10000+:菌群分析 宝宝与猫狗 梅毒狂想曲 提DNA发Nature Cell专刊 肠道指挥大脑

系列教程:微生物组入门 Biostar 微生物组  宏基因组

专业技能:学术图表 高分文章 生信宝典 不可或缺的人

一文读懂:宏基因组 寄生虫益处 进化树

必备技能:提问 搜索  Endnote

文献阅读 热心肠 SemanticScholar Geenmedical

扩增子分析:图表解读 分析流程 统计绘图

16S功能预测   PICRUSt  FAPROTAX  Bugbase Tax4Fun

在线工具:16S预测培养基 生信绘图

科研经验:云笔记  云协作 公众号

编程模板: Shell  R Perl

生物科普:  肠道细菌 人体上的生命 生命大跃进  细胞暗战 人体奥秘

写在后面

为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外5000+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。PI请明示身份,另有海内外微生物相关PI群供大佬合作交流。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍未解决群内讨论,问题不私聊,帮助同行。

学习16S扩增子、宏基因组科研思路和分析实战,关注“宏基因组”

点击阅读原文,跳转最新文章源代码

R语言可视化学习笔记之ggridges包相关推荐

  1. R语言可视化学习笔记之ggridges包绘制山峦图

    作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源. 严涛老师的绘图教程还有: gganimate |诺奖文章里面的动图绘制教程来了!! ggplot2学习笔记之 ...

  2. R语言可视化学习笔记之相关矩阵可视化包ggcorrplot

    本文转载自"R语言中文社区",己获授权. 作者简介Introduction taoyan:伪码农,R语言爱好者,爱开源. 个人博客: https://ytlogos.github. ...

  3. R语言小白学习笔记13—基本统计

    R语言小白学习笔记13-基本统计 笔记链接 学习笔记13-基本统计 13.1 概括性统计量 13.2 相关系数和协方差 13.3 t-检验 13.3.1 单样本t检验 13.3.2 两样本t检验 13 ...

  4. R语言小白学习笔记12—概率分布

    R语言小白学习笔记12-概率分布 笔记链接 学习笔记12-概率分布 12.1 正态分布 12.2 二项分布 12.3 泊松分布 12.4 其他分布 笔记链接 学习笔记1-R语言基础. 学习笔记2-高级 ...

  5. R语言数据处理学习记录--使用linkET包完成mental test

    R语言数据处理学习记录–使用linkET包完成mental test 注:本文仅作为自己的学习记录以备复习查阅 一 简单介绍一下 这个包依旧是来自于GitHub上,作者给出的介绍:linkET的目标是 ...

  6. R语言小白学习笔记3—R语言读取数据

    R语言小白学习笔记3-R语言读取数据 笔记链接 想说的话 学习笔记3-R语言读取数据 3.1 读取CSV文件 3.1.1 read_delim函数 3.1.2 fread函数 3.2 读取Excel数 ...

  7. r型聚类典型指标_应用统计学与R语言实现学习笔记(十)——聚类分析

    Chapter 10 Cluster Analysis 本篇是第十章,内容是聚类分析.由于之后的几章是典型的分析方法.而且在14章的案例里面可能不会体现,所以内容里会渗透较多的R语言操作.由于简书不支 ...

  8. r语言实现关联分析--关联规则挖掘(Apriori算法) (r语言预测学习笔记)

    r语言实现关联分析–关联规则挖掘 关联分析: 引子: 我们一般把一件事情发生,对另一间事情也会产生影响的关系叫做关联.而关联分析就是在大量数据中发现项集之间有趣的关联和相关联系(形如"由于某 ...

  9. R语言可视化散点图、使用ggrepel包的geom_text_repel函数避免数据点之间的标签互相重叠(设置min.segment.length参数为Inf不添加标签线段)

    R语言ggplot2可视化:可视化散点图并为散点图中的数据点添加文本标签.使用ggrepel包的geom_text_repel函数避免数据点之间的标签互相重叠(设置min.segment.length ...

最新文章

  1. 解析大型.NET ERP系统 设计异常处理模块
  2. 语义分割--Fully Convolutional DenseNets for Semantic Segmentation
  3. Linux——快照与克隆
  4. tableau的2020.3在mac上可以使用,2020.4不行:亲测有效
  5. python数据分析考点_零基础30天入门python数据分析|知识点整理
  6. python函数参数列表中的*与**
  7. CodeForces - 1343F Restore the Permutation by Sorted Segments(思维)
  8. 日期setHours()方法以及JavaScript中的示例
  9. php生成有复杂结构的excel文档
  10. 酷黑风个人主页+引导页
  11. 使用数据集(DataSet)、数据表(DataTable)、集合(Collection)传递数据
  12. 建立 arm-linux 交叉编译环境
  13. PCWorld评出的2010年世界杀毒软件排名
  14. 什么是用户故事 (User Story)?
  15. suger数据库使用1
  16. 安卓开发——MaterialDesign实战
  17. 上门洗车APP --- Androidclient开发 之 网络框架封装介绍(二)
  18. 半年以来的图像去雾总结-图像去雾(一)暗通道去雾
  19. linux java定时关机,Linux定时关机
  20. 读懂 x86 架构 Linux 系统虚拟化,这文不容错过

热门文章

  1. Kafka主题体系架构-复制、故障转移和并行处理
  2. 书中自有BAT Offer!
  3. 值得安利!推荐7款让人眼前一亮的宝藏软件
  4. 来客推商城V3多用户uni-app商城源码如何搭建?盈利模式怎么样的?
  5. Leangoo看板工具做投诉问题处理流程
  6. 可集成DevOps的Scrum敏捷工具!
  7. 在leangoo里列表一般怎么设置?
  8. SQL与NoSQL区别-查询方式
  9. 分布式架构的对比-EMC VMAX
  10. 常用的数据结构-散列表