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

Squarify绘图:方块间距添加及配色后尺寸辨识度问题咨询

解决squarify方块间距与颜色区分问题

嘿,刚好我之前也碰到过类似的困扰,给你分享两个简单直接的解决办法,既能给方块加上微小间距,又能解决颜色重复导致的区分困难:

一、给方块添加微小间距

squarify库本身没有专门的间距参数,但我们可以通过给每个方块添加白色边框的方式模拟出间距效果,操作起来非常简单:

  1. 先用squarify.plot()获取每个方块的矩形对象
  2. 循环遍历这些矩形,设置白色边框和合适的线宽

二、解决颜色区分问题

默认的颜色循环很容易出现重复,我们可以直接指定渐变色彩映射或者自定义颜色列表,确保每个方块颜色独特:

  • 用matplotlib的内置色板(比如viridis、plasma)生成和数据长度匹配的颜色
  • 也可以手动定义一组颜色,完全适配你的场景需求

完整代码示例

import squarify
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np

# 假设你的尺寸数据是sizeTab
sizeTab = [10, 25, 18, 32, 15]

# 绘制树状图,同时获取每个方块的矩形对象,并分配渐变颜色
rects = squarify.plot(
    sizes=sizeTab,
    alpha=.8,
    # 使用viridis色板生成和数据长度匹配的颜色
    color=cm.viridis(np.linspace(0, 1, len(sizeTab)))
)

# 给每个方块添加白色边框,模拟间距
for rect in rects:
    rect.set_edgecolor('white')
    rect.set_linewidth(1)  # 线宽越大,间距看起来越宽,可根据需求调整

# 关闭坐标轴,设置标题
plt.axis('off')
plt.title('Plottitle')
plt.show()

如果想要用自定义颜色,只需要把color参数换成自己的颜色列表就行,比如:

color=['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FFEAA7']

这样调整后,不仅方块之间有了清晰的微小间距,每个方块的颜色也各不相同,再也不用担心分不清尺寸啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:24:54