You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ggplot2的Treemap中为子组YEAR设置渐变不同颜色?

给Treemap的YEAR子组设置渐变颜色方案

当然可行!完全可以给你的树形图(Treemap)里的YEAR子组设置渐变色彩,替代单一的蓝色。下面我用ggplot2和treemapify包来实现这个需求,结合你提供的示例数据一步步来:

步骤1:准备环境和数据

首先加载所需的包,同时设置随机种子保证示例数据可复现:

# 加载包
library(ggplot2)
library(treemapify)

# 设置随机种子确保sample结果一致
set.seed(123)

# 生成你提供的数据框
PL <- c(rep("PL1", 4), rep("PL2", 4), rep("PL3", 4), rep("PL4", 4))
CNT <- sample(seq(1:50), 16)
YEAR <- rep(c("2015", "2016", "2017", "2018"), 4)
df <- data.frame(PL, YEAR, CNT)

步骤2:绘制带渐变色彩的Treemap

核心是把YEAR转换为数值型变量,然后映射到fill参数,再用渐变色彩刻度来实现不同年份的颜色渐变:

ggplot(df, aes(area = CNT, fill = as.numeric(YEAR), label = YEAR)) +
  geom_treemap() +
  # 添加子组标签
  geom_treemap_text(colour = "white", place = "centre", size = 12) +
  # 设置渐变色彩(这里用viridis色系,也可以换其他渐变)
  scale_fill_viridis_c(name = "年份", breaks = c(2015,2016,2017,2018), 
                       labels = c("2015","2016","2017","2018")) +
  # 调整主题,去掉多余元素
  theme_minimal() +
  theme(legend.position = "right")

关键说明

  • as.numeric(YEAR):因为YEAR是字符型,转成数值才能让渐变色彩按年份顺序变化
  • scale_fill_viridis_c:这是一个内置的美观渐变色系,你也可以用scale_fill_gradient(low = "#e0f7fa", high = "#00796b")自定义渐变的起始和结束颜色
  • 如果想让渐变方向反过来,可以在scale_fill_viridis_c里加direction = -1参数

这样你的Treemap里,不同的YEAR子组就会呈现出渐变的色彩,而不是单一蓝色啦!

内容的提问来源于stack exchange,提问作者Ibo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:51:24