R绘图--峰峦图/山脊图/ggridges包

山脊图是部分重叠的线图,可产生山脉的印象。它们对于可视化分布随时间或空间的变化非常有用。

绘图

加载包和数据

# install.packages("ggridges")
# 加载包
library(ggplot2)
library(ggridges)
library(viridis)
library(tidyverse)

# 准备输入数据
data(lincoln_weather)
pdata <- lincoln_weather[,c(1,3,24)]
colnames(pdata)

数据介绍

第二列是X年X月X天的平均气温值,第三列是月份。目标是展现每个月份的气温分布密度曲线。

示例数据

情景一

x为连续型变量,y为分类变量,按照y分类进行颜色填充。

当你拥有一个连续型变量,一个分类变量,并且要按分类变量填充颜色时,适用此种情形。

# 情景一:x为连续型变量,y为分类变量---------------------------------------------------
# 按照y分类进行颜色填充
ggplot(pdata, aes(x = `Mean Temperature [F]`, y = Month,fill=Month)) + 
  geom_density_ridges(color='white', #设置概率密度线的填充颜色
                      rel_min_height = 0.005, # 剪掉拖尾的尾巴,相对于任何密度曲线的最高点的百分比截止值
                      scale = 2)+ #设置山脊高度
  scale_fill_viridis(option="viridis", discrete=TRUE)+ #设置颜色
  theme_minimal()+ #设置主题
  theme(legend.position = 'None')+ #取消图例
  labs(title = 'Temperatures in Lincoln NE in 2016') #设置标题
ggsave('plot1.pdf',width = 5,height = 4)

plot1-01

情景二

x为连续型变量,y为分类变量,按照x值进行颜色填充。

当你拥有一个连续型变量,一个分类变量,并且要按连续型变量填充颜色时,适用此种情形。

# 情景二:x为连续型变量,y为分类变量----------------------------------------------------
# 按照x值进行颜色填充
ggplot(pdata, 
       aes(x = `Mean Temperature [F]`, y = Month, fill = stat(x))) +
  geom_density_ridges_gradient(rel_min_height = 0.01, # 剪掉拖尾的尾巴,相对于任何密度曲线的最高点的百分比截止值
                               scale = 3) + #设置山脊高度
    scale_fill_viridis_c(name = "Temp. [F]", option = "C")+ #设置颜色
  labs(title = 'Temperatures in Lincoln NE in 2016')+ #设置标题
  theme_minimal() #设置主题
ggsave('plot2.pdf',width = 5,height = 4)

plot2

情景三

x为连续型变量,y为分类变量,height为x的密度值(连续型变量),按照y分类进行颜色填充。

当你拥有一个连续型变量,一个分类变量,以及连续型变量的密度值,并且要按分类变量填充颜色时,适用此种情形。

 

# 情景三:x为连续型变量,y为分类变量,height为x的密度值(连续型变量)---------------------
# 按照y分类进行颜色填充

# 手动计算数值型变量的概率密度值
pdata2 <- pdata %>%
  group_by(Month) %>%
  group_modify(~ ggplot2:::compute_density(.x$`Mean Temperature [F]`, NULL)) %>%
  rename(`Mean Temperature [F]` = x)

# 绘图
ggplot(pdata2, 
       aes(x = `Mean Temperature [F]`, y = Month, height = density,fill=Month)) + 
  geom_density_ridges(stat = "identity")+
  scale_fill_viridis(option="viridis", discrete=TRUE)+
  theme_minimal()+
  theme(legend.position = 'None')
ggsave('plot3.pdf',width = 5,height = 4)

plot3

情景四

概率密度图+原始数据点

# 概率密度图+原始数据点---------------------------------------------
ggplot(pdata, aes(x = `Mean Temperature [F]`, y = Month,fill=Month)) + 
  geom_density_ridges(color='black',
                      rel_min_height = 0.001,
                      scale = 1,
                      jittered_points = TRUE, #显示抖动点
                      alpha=0.7, #设置透明度
                      point_size=0.7)+ #设置点的大小
  scale_fill_viridis(option="viridis", discrete=TRUE)+
  theme_minimal()+
  theme(legend.position = 'None')+
  labs(title = 'Temperatures in Lincoln NE in 2016')
ggsave('plot4.pdf',width = 5,height = 4)

plot4

「总结」以上就是山脊图绘制概率密度曲线时的使用情景分类,总结来说情景1、情景2适用于没有计算概率密度值时使用,场景3适用于已经计算了概率密度值时使用。

山脊图也不仅仅只能应用于绘制概率密度曲线,在场景三中,只要能提供相应类型的数据,就可以绘制山脊图。

示例获取

示例代码及数据获取:

方式①:转发此文至朋友圈,所有人可见,保留1h,集6个赞,文案附“推荐关注”。1h后截图发送后台,并留言“20240117山脊图”。

方式②:关注公众号,文末点击“喜欢作者”,赞赏本文,金额随意。截图发送后台,并留言“20240117山脊图”。

  • 16
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮肤小白生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值