Squarify绘图:方块间距添加及配色后尺寸辨识度问题咨询
解决squarify方块间距与颜色区分问题
嘿,刚好我之前也碰到过类似的困扰,给你分享两个简单直接的解决办法,既能给方块加上微小间距,又能解决颜色重复导致的区分困难:
一、给方块添加微小间距
squarify库本身没有专门的间距参数,但我们可以通过给每个方块添加白色边框的方式模拟出间距效果,操作起来非常简单:
- 先用
squarify.plot()获取每个方块的矩形对象 - 循环遍历这些矩形,设置白色边框和合适的线宽
二、解决颜色区分问题
默认的颜色循环很容易出现重复,我们可以直接指定渐变色彩映射或者自定义颜色列表,确保每个方块颜色独特:
- 用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
相关产品推荐
相关产品推荐

