首页 > 科研绘图 > R语言可视化学习笔记之ggridges包绘制山峦图
2022
11-18

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

作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,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)继续学习。

R统计和作图

  • Graphpad,经典绘图工具初学初探
  • 维恩(Venn)图绘制工具大全 (在线+R包)
  • 在R中赞扬下努力工作的你,奖励一份CheatShet
  • 别人的电子书,你的电子书,都在bookdown
  • R语言 - 入门环境Rstudio
  • R语言 - 热图绘制 (heatmap)
  • R语言 - 基础概念和矩阵操作
  • R语言 - 热图简化
  • R语言 - 热图美化
  • R语言 - 线图绘制
  • R语言 - 线图一步法
  • R语言 - 箱线图(小提琴图、抖动图、区域散点图)
  • R语言 - 箱线图一步法
  • R语言 - 火山图
  • R语言 - 富集分析泡泡图
  • R语言 - 散点图绘制
  • R语言 - 韦恩图
  • R语言 - 柱状图
  • R语言 - 图形设置中英字体
  • R语言 - 非参数法生存分析
  • R语言 - 绘制seq logo图
  • WGCNA分析,简单全面的最新教程
  • psych +igraph:共表达网络构建
  • 一文学会网络分析——Co-occurrence网络图在R中的实现
  • 一文看懂PCA主成分分析
  • 富集分析DotPlot,可以服
  • 基因共表达聚类分析和可视化
  • R中1010个热图绘制方法
  • 还在用PCA降维?快学学大牛最爱的t-SNE算法吧, 附Python/R代码
  • 一个函数抓取代谢组学权威数据库HMDB的所有表格数据
  • 文章用图的修改和排版
  • network3D: 交互式桑基图
  • network3D 交互式网络生成
  • Seq logo 在线绘制工具——Weblogo
  • 生物AI插图素材获取和拼装指导
  • ggplot2高效实用指南 (可视化脚本、工具、套路、配色)
  • 图像处理R包magick学习笔记
  • SOM基因表达聚类分析初探
  • 利用gganimate可视化全球范围R-Ladies(R社区性别多样性组织)发展情况
  • 一分钟绘制磷脂双分子层:AI零基础入门和基本图形绘制
  • AI科研绘图(二):模式图的基本画法
  • 你知道R中的赋值符号箭头(<-)和等号(=)的区别吗?
  • R语言可视化学习笔记之ggridges包
  • 利用ComplexHeatmap绘制热图(一)
  • ggplot2学习笔记之图形排列
  • R包reshape2,轻松实现长、宽数据表格转换
  • 用R在地图上绘制网络图的三种方法
  • PCA主成分分析实战和可视化 附R代码和测试数据
  • iTOL快速绘制颜值最高的进化树!
  • 12个ggplot2扩展包帮你实现更强大的可视化
  • 编程模板-R语言脚本写作:最简单的统计与绘图,包安装、命令行参数解析、文件读取、表格和矢量图输出
  • R语言统计入门课程推荐——生物科学中的数据分析Data Analysis for the Life Sciences
  • 数据可视化基本套路总结
  • 你知道R中的赋值符号箭头 <- 和等号 = 的区别吗?
  • 使用dplyr进行数据操作30例
  • 交集intersect、并集union、找不同setdiff
  • R包reshape2,轻松实现长、宽数据表格转换
  • 1数据类型(向量、数组、矩阵、 列表和数据框)
  • 2读写数据所需的主要函数、与外部环境交互
  • 3数据筛选——提取对象的子集
  • 4向量、矩阵的数学运算
  • 5控制结构
  • 6函数及作用域
  • 7认识循环函数lapply和sapply
  • 8分解数据框split和查看对象str
  • 9模拟—随机数、抽样、线性模型
  • 1初识ggplot2绘制几何对象
  • 2图层的使用—基础、加标签、注释
  • 3工具箱—误差线、加权数、展示数据分布
  • 4语法基础
  • 5通过图层构建图像
  • 6标度、轴和图例
  • 7定位-分面和坐标系
  • 8主题设置、存储导出
  • 9绘图需要的数据整理技术
  • 创建属于自己的调色板
  • 28个实用绘图包,总有几个适合你
  • 热图绘制
  • R做线性回归
  • 绘图相关系数矩阵corrplot
  • 相关矩阵可视化ggcorrplot
  • 绘制交互式图形recharts
  • 交互式可视化CanvasXpress
  • 聚类分析factoextra
  • LDA分析、作图及添加置信-ggord
  • 解决散点图样品标签重叠ggrepel
  • 添加P值或显著性标记ggpubr
  • Alpha多样性稀释曲线rarefraction curve
  • 堆叠柱状图各成分连线画法:突出组间变化
  • 冲击图展示组间时间序列变化ggalluvial
  • 桑基图riverplot
  • 微生物环境因子分析ggvegan
  • 五彩进化树与热图更配ggtree
  • 多元回归树分析mvpart
  • 随机森林randomForest 分类Classification 回归Regression
  • 加权基因共表达网络分析WGCNA
  • circlize包绘制circos-plot
  • R语言搭建炫酷的线上博客系统
  • 28个实用绘图包,总有几个适合你
  • 热图绘制
  • R做线性回归
  • 绘图相关系数矩阵corrplot
  • 相关矩阵可视化ggcorrplot
  • 绘制交互式图形recharts
  • 交互式可视化CanvasXpress
  • 聚类分析factoextra
  • LDA分析、作图及添加置信-ggord
  • 解决散点图样品标签重叠ggrepel
  • 添加P值或显著性标记ggpubr
  • Alpha多样性稀释曲线rarefraction curve
  • 堆叠柱状图各成分连线画法:突出组间变化
  • 冲击图展示组间时间序列变化ggalluvial
  • 桑基图riverplot
  • 微生物环境因子分析ggvegan
  • 五彩进化树与热图更配ggtree
  • 多元回归树分析mvpart
  • 随机森林randomForest 分类Classification 回归Regression
  • 加权基因共表达网络分析WGCNA
  • circlize包绘制circos-plot
  • R语言搭建炫酷的线上博客系统
  • 维恩(Venn)图绘制工具大全 (在线+R包)
  • R包circlize:柱状图用腻了?试试好看的弦状图
  • 获取pheatmap聚类后和标准化后的结果
  • 增强火山图,要不要试一下?
  • 一个震撼的交互型3D可视化R包 - 可直接转ggplot2图为3D
  • 赠你一只金色的眼 - 富集分析和表达数据可视化
  • 是Excel的图,不!是R的图
  • 道友,来Rstudio里面看动画了
  • 用了这么多年的PCA可视化竟然是错的!!!
  • R语言可视化学习笔记之ggridges包
  • 万能转换:R图和统计表转成发表级的Word、PPT、Excel、HTML、Latex、矢量图等
  • 那天空飘过的梅花月饼,是今年中秋 最好的礼物


最后编辑:
作者:萌小白
一个热爱网络的青年!

发布评论

表情