R实战 | 山脊图(ridgeline plot)

简介: R实战 | 山脊图(ridgeline plot)

R实战 | 山脊图(ridgeline plot)


示例数据


library(ggplot2)
library(reshape2)
# 以基因表达矩阵为例
test = matrix(rnorm(200), 20, 10)
test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3
test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2
test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4
colnames(test) = paste("Test", 1:10, sep = "")
rownames(test) = paste("Gene", 1:20, sep = "")
head(test)
# 长宽转换
test_wide <- melt(test, varnames = c("gene","group"),value.name="exp")
head(test_wide)


> head(test)
         Test1       Test2    Test3       Test4    Test5       Test6
Gene1 6.862339 -0.09388774 7.025991  0.32898812 6.711819 -0.63220649
Gene2 6.785854 -0.76082397 4.806890  1.64125716 7.331260  0.02801615
Gene3 7.476389 -0.52560553 6.422600  0.08075241 5.347340  0.51520844
Gene4 6.228567 -0.45859833 6.403849 -0.75171274 6.671903  0.85806855
Gene5 5.969722  0.68304298 6.229048 -1.21759698 5.318038  1.09475362
Gene6 6.229172  0.43753681 8.393141  0.90708380 6.444889  0.74859812> head(test_wide)
   gene group      exp
1 Gene1 Test1 6.862339
2 Gene2 Test1 6.785854
3 Gene3 Test1 7.476389
4 Gene4 Test1 6.228567
5 Gene5 Test1 5.969722
6 Gene6 Test1 6.229172

山脊图可视化


基础图形


# install.packages("ggridges")
library(ggridges)
ggplot(test_wide, aes(x = exp, y = gene)) +
  geom_density_ridges()

image.png

基础图形


常用参数

ggplot(test_wide, aes(x = exp, y = gene)) +
  geom_density_ridges(rel_min_height = 0.005, # 剪尾
                      scale = 3, # 山脊比例
                      fill = "white", # 填充 
                      alpha = 0.8, # 透明度
                      color = 4, # 脊线条颜色
                      linetype = 1,# 脊线条类型
                      lwd = 1 ) #  脊线条粗细

image.png

常用参数

分组

ggplot(test_wide, aes(x = exp, y = gene, fill = gene ))  +
  geom_density_ridges()

image.png

渐变

ggplot(test_wide, aes(x = exp, y = gene, fill = stat(x) ))  +

 geom_density_ridges_gradient() +

 scale_fill_viridis_c(name = "Exp", option = "C")+

 coord_cartesian(clip = "off") + # To avoid cut off

 theme_minimal()

image.png

添加分位线

# 四分位线
ggplot(test_wide, aes(x = exp, y = gene,  fill = stat(quantile))) +
  stat_density_ridges(quantile_lines = FALSE,
                      calc_ecdf = TRUE,
                      geom = "density_ridges_gradient") +
  scale_fill_brewer(name = "")

image.png

# 双尾分布线
ggplot(test_wide, aes(x = exp, y = gene,  fill = stat(quantile))) +
  stat_density_ridges(quantile_lines = TRUE,
                      calc_ecdf = TRUE,
                      geom = "density_ridges_gradient",
                      quantiles = c(0.05, 0.95)) +
  scale_fill_manual(name = "Prob.", values = c("#E2FFF2", "white", "#B0E0E6"),
                    labels = c("(0, 5%]", "(5%, 95%]", "(95%, 1]"))

image.png

更多

Ridgeline plot in ggplot2 with ggridges | R CHARTS (r-charts.com)


参考

Ridgeline plot in ggplot2 with ggridges | R CHARTS (r-charts.com)


相关文章
ggplot2入门 学习笔记| 小提琴图怎么画?
ggplot2入门 学习笔记| 小提琴图怎么画?
|
数据格式
如何绘制热图?ggplot2入门笔记
如何绘制热图?ggplot2入门笔记
|
数据采集 数据可视化 算法
数据分析可视化常用图介绍以及相关代码实现(箱型图、Q-Q图、Kde图、线性回归图、热力图)
数据分析可视化常用图介绍以及相关代码实现(箱型图、Q-Q图、Kde图、线性回归图、热力图)
|
人工智能 搜索推荐 数据处理
ggplot2|玩转Manhattan图-你有被要求这么画吗?
ggplot2|玩转Manhattan图-你有被要求这么画吗?
252 0
|
算法
ggplot2|从0开始绘制PCA图
ggplot2|从0开始绘制PCA图
481 0
|
数据可视化 数据挖掘 Python
跟着Nature学作图:R语言ggplot2散点图和柱形图完整示例(Extended Fig3)
跟着Nature学作图:R语言ggplot2散点图和柱形图完整示例(Extended Fig3)
|
数据可视化 数据挖掘 Python
跟着Nature学作图:R语言ggplot2分组折线图完整示例(Extended Fig2)
跟着Nature学作图:R语言ggplot2分组折线图完整示例(Extended Fig2)
|
数据可视化 Linux API
Py之seaborn:数据可视化seaborn库(一)的柱状图、箱线图(置信区间图)、散点图/折线图、核密度图/等高线图、盒形图/小提琴图/LV多框图的简介、使用方法之最强攻略(建议收藏)
Py之seaborn:数据可视化seaborn库(一)的柱状图、箱线图(置信区间图)、散点图/折线图、核密度图/等高线图、盒形图/小提琴图/LV多框图的简介、使用方法之最强攻略(建议收藏)
Py之seaborn:数据可视化seaborn库(一)的柱状图、箱线图(置信区间图)、散点图/折线图、核密度图/等高线图、盒形图/小提琴图/LV多框图的简介、使用方法之最强攻略(建议收藏)
|
数据可视化 Python
Py之seaborn:数据可视化seaborn库(二)的组合图可视化之密度图/核密度图分布可视化、箱型图/散点图、小提琴图/散点图组合可视化的简介、使用方法之最强攻略(建议收藏)
Py之seaborn:数据可视化seaborn库(二)的组合图可视化之密度图/核密度图分布可视化、箱型图/散点图、小提琴图/散点图组合可视化的简介、使用方法之最强攻略(建议收藏)
Py之seaborn:数据可视化seaborn库(二)的组合图可视化之密度图/核密度图分布可视化、箱型图/散点图、小提琴图/散点图组合可视化的简介、使用方法之最强攻略(建议收藏)
|
Python
python matplotlib绘制 3D图像专题 (三维柱状图、曲面图、散点图、曲线图合集)
python matplotlib绘制 3D图像专题 (三维柱状图、曲面图、散点图、曲线图合集)
1554 0
python matplotlib绘制 3D图像专题 (三维柱状图、曲面图、散点图、曲线图合集)