绘制混合密度函数图以及添加分位数线

简介: 这里我主要使用 ggridges 包中的 stat_density_ridges()。这个包的介绍,小编以前做过一期内容,可见:ggridges包—峰峦图详细介绍。读者需要进一步阅读课件这篇博文[1],以及一些案例[2]。

简介


最近有个需求,统计课中需要绘制以下图形:

ANU%KEJ8UUBHMLM}K8JKJ~5.png

这里我主要使用 ggridges 包中的 stat_density_ridges()。这个包的介绍,小编以前做过一期内容,可见:ggridges包—峰峦图详细介绍。读者需要进一步阅读课件这篇博文[1],以及一些案例[2]


加载包

library(ggplot2)
library(ggridges)


产生数据集

假设数据来源于一个混合分布。

item <- 10000
inds <- rbinom(1, item, 0.5)
x <- c(rnorm(inds, 1, 1), rnorm(item - inds, 8, 1))
data <- data.frame("value" = x, "class" = rep(1, length(x)))


绘制密度函数图并添加分位数线

# 绘图
p1 <- ggplot(data, aes(x = value, y = class, fill = factor(stat(quantile)))) +
  stat_density_ridges(
    geom = "density_ridges_gradient",
    calc_ecdf = TRUE,
    quantiles = c(0.025, 0.975) #添加分为数线
  ) +
  scale_fill_manual(
    name = "Probability", values = c("#E2EAF6", "#436FB0", "#E2EAF6")
  ) +
  theme_bw() +
  theme(legend.position = "none", panel.grid = element_blank()) +
  labs(x = "x", y = "Density")
p1

]`G@_)3DAGGLR1C_%JQLEO6.png

p2 <- ggplot(data, aes(x = value, y = class, fill = factor(stat(quantile)))) +
  stat_density_ridges(
    geom = "density_ridges_gradient",
    calc_ecdf = TRUE,
    quantiles = c(0.005, 0.495, 0.51, 0.99)
  ) +
  scale_fill_manual(
    name = "Probability", values = c("#E2EAF6", "#436FB0", "#E2EAF6", "#436FB0", "#E2EAF6"),
  ) +
  theme_bw() +
  theme(legend.position = "none", panel.grid = element_blank()) +
  labs(x = "x", y = "Density")
p2

E4{4)RQ167NN$7_}HU7T0{K.png


合并两图

使用 cowplot[3] 包,将两图进行合并。小编对该包的介绍做过几期,可见:cowplot包:用R添加水印。其他合并的方式还有:R可视乎|合并多幅图形R可视乎|分面一页多图

library(cowplot)
# pdf("plot_cow.pdf", width = 8, height = 4)
plot_grid(p1, p2, ncol = 1, nrow = 2)
# dev.off()

{DN{$(YQT6$@R77EN}20DNH.png

目录
打赏
0
0
0
0
13
分享
相关文章
绘制热图时看不出颜色差异?四种方式转换处理使结果显而“易”见
绘制热图时看不出颜色差异?四种方式转换处理使结果显而“易”见
20070 2
二维矩形件排样算法之最低水平线算法实现
二维矩形件排样算法之最低水平线算法实现
269 0
封装一个函数,小球原始高度不固定,弹起比例不固定、计算谈几次后,高度低于1米
封装一个函数,小球原始高度不固定,弹起比例不固定、计算谈几次后,高度低于1米
75 0
地图权重计算(算法题)
地图权重计算(算法题)
64 0
|
11月前
【每日一题Day162】LC1637两点之间不包含任何点的最宽垂直区域 | 排序
【每日一题Day162】LC1637两点之间不包含任何点的最宽垂直区域 | 排序
145 0
跟着 Cell 学作图 | 分组蜂群图+均值线+差异分析(组间+组内)
跟着 Cell 学作图 | 分组蜂群图+均值线+差异分析(组间+组内)
259 0
区间预测 | MATLAB实现QRBiGRU双向门控循环单元分位数回归时间序列区间预测
区间预测 | MATLAB实现QRBiGRU双向门控循环单元分位数回归时间序列区间预测
基于 ggridges 绘制剩余使用寿命密度图
基于 ggridges 绘制剩余使用寿命密度图
156 0
LeetCode 1637. 两点之间不包含任何点的最宽垂直面积
给你 n 个二维平面上的点 points ,其中 points[i] = [xi, yi] ,请你返回两点之间内部不包含任何点的 最宽垂直面积 的宽度。
138 0
μcGUI学习笔记之三文本显示与数值显示
  μc/GUI学习笔记之三文本显示与数值显示 3.1      文本显示 3.1.1   显示支持控制字符 文本显示支持的ASCII字符如图3.1。
1001 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等