如何在R中自定义脊线图(joyplot)展示计数数据而非密度?
解决方案
要实现按年份堆叠展示每周计数数据的脊线图,你需要用ggridges包中的geom_ridgeline(而非绘制密度图的geom_density_ridges),它可以直接基于原始数值绘制脊线。
修改后的代码
library(ggplot2) library(ggridges) library(dplyr) # 模拟数据(将year转为因子,确保分组正确) week <- c(rep(1:52,3)) year <- factor(c(rep(2012,52),rep(2013,52),rep(2014,52))) x1 <- rnbinom(52, 10, .5) x2 <- rnbinom(52, 10, .5) x3 <- rnbinom(52, 10, .5) x <- c(x1,x2,x3) df <- as.data.frame(cbind(year,week,x)) %>% mutate(week = as.numeric(week), x = as.numeric(x)) # 绘制脊线图 ggplot(df, aes(x = week, y = year, height = x)) + geom_ridgeline(aes(fill = year), scale = 0.5, min_height = 0) + # scale控制堆叠间距,min_height确保底部对齐 labs(x = "周", y = "年份", title = "各年份每周计数脊线图") + theme_ridges() # 可选主题,优化脊线样式
关键说明
geom_ridgeline的核心参数是height,直接绑定你的计数变量x,用于展示每周的实际数值scale参数可调整不同年份脊线的垂直间距,根据可视化需求自行修改min_height = 0能确保所有脊线底部对齐,避免数值为0时的显示断层问题- 将
year转为因子类型,确保每个年份作为独立分组堆叠展示
内容的提问来源于stack exchange,提问作者mmi
相关产品推荐
相关产品推荐

