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

如何用Plotly实现按变量调整颜色深度的Treemap(复刻treemap效果)

用Plotly复刻treemap包的树形图效果

原treemap包实现效果

我用treemap包绘制了一幅树形图,其中每个矩形的面积与Valor变量关联,颜色由Nota变量标准化后的scale变量控制,采用红灰渐变配色。代码及效果如下:

library(data.table)
library(tidyverse)
library(treemap)
url <- "https://raw.githack.com/fsbmat-ufv/stackExchange/main/df2.csv"
df <- fread(url)
df$scale <- scale(df$Nota)
treemap(df, index = "MUNICIPIO", vSize = "Valor", vColor = "scale",
        type = "value", palette = "-RdGy", lowerbound.cex.labels = 0.1,
        title = "Treemap Rio de Janeiro",
        overlap.labels=0.05)

treemap原效果

尝试Plotly实现的问题

我希望用Plotly创建相同或类似的树形图,要求矩形面积关联Valor变量,颜色深度随Nota或scale变量变化,但尝试的代码未达到预期效果。尝试的代码如下:

color <- colorRamp(c("red", "gray"))
colorlist <- rgb(color((df$Nota)/max(df$Nota)), max = 255)
df %>%
  plotly::plot_ly(labels = ~ MUNICIPIO,
                  values = ~Valor,
                  parents = ~NA,
                  type = 'treemap',
                  hovertemplate = "City: %{label}<extra></extra>") %>%
  plotly::layout(title = "Patent scape",
                 colorway = colorlist)

Plotly尝试效果

解决方案

以下是可以实现目标效果的Plotly代码,关键修改点已标注:

library(data.table)
library(plotly)

# 读取数据并处理scale变量
url <- "https://raw.githack.com/fsbmat-ufv/stackExchange/main/df2.csv"
df <- fread(url)
df$scale <- scale(df$Nota)

# Plotly树形图实现
plot_ly(df,
        labels = ~MUNICIPIO,          # 对应原treemap的index参数
        values = ~Valor,              # 控制矩形面积,对应vSize
        parents = ~NA,                # 无层级结构,设为NA
        type = 'treemap',
        color = ~scale,               # 绑定颜色到标准化后的scale变量,对应vColor
        colors = c("red", "gray"),    # 指定红灰渐变配色,对应原palette="-RdGy"
        hovertemplate = "城市: %{label}<br>Valor: %{value}<br>Nota: %{customdata}<extra></extra>",
        customdata = ~Nota            # 传入Nota到hover提示
        ) %>%
  layout(title = "Treemap Rio de Janeiro")

关键修改说明:

  • 修正了管道符语法错误(原代码%>改为正确的%>%)
  • 放弃手动生成颜色列表的方式,改用Plotly原生的color参数绑定颜色变量,自动实现渐变映射
  • 用colors参数直接指定红灰渐变的起止颜色,和原treemap的配色逻辑一致
  • 优化了hover提示内容,增加Valor和Nota的显示,提升交互体验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:15:53