如何使用R的ggplot2复刻森林火灾年度时间轴可视化效果
回答
实现思路
你当前的代码仅通过散点展示了火灾的起始时间,要复刻目标可视化效果,可按以下逻辑调整:
- 用线段替代散点展示单场火灾的完整时间跨度,同时将线段粗细映射为总烧毁面积,直观呈现火灾规模
- 统一将所有火灾的起止时间转换为当年的月日格式,忽略实际年份,就能把不同年份的火灾数据都对齐到同一个1-12月的x轴上,和你设置的纵向年度y轴匹配
- 如果需要区分林地、农用地等不同类型的烧毁面积,可以把原数据转换为长格式,用颜色映射不同土地类型即可
修改后可运行代码
library(ggplot2) library(lubridate) library(scales) library(data.table) # 处理数据:把所有火灾的起止时间对齐到2021年,实现不同年份数据的月份对齐 forestfiresv[, `:=`( x_start = update(dtstart, year = 2021), x_end = update(dtend, year = 2021) )] ggplot(forestfiresv, aes(y = year)) + # 用linerange展示火灾起止时段,粗细对应烧毁总面积 geom_linerange(aes(xmin = x_start, xmax = x_end, size = totalareaburnt), color = "#d7301f", alpha = 0.7) + # x轴适配完整年度的月份展示 scale_x_datetime(limits = as.POSIXct(c("2021-01-01", "2021-12-31"), tz = "UTC"), expand = c(0,0), date_breaks = "2 months", labels = date_format("%b")) + # 自定义线段大小范围,让面积差异更明显 scale_size_continuous(range = c(1, 8), name = "总烧毁面积") + theme_bw() + labs(x = "月份", y = "年份")
内容的提问来源于stack exchange,提问作者Jelo A
相关产品推荐
相关产品推荐

