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

Matplotlib与squarify问题:同一figure中两个treemap显示在同一axes

解决Matplotlib+squarify在同一Figure中显示两个独立Treemap的问题

你的代码有几个关键问题导致两个treemap重叠在同一个axes里,逐一修正如下:

  1. 变量名重复覆盖:你定义完第一组数据后,又用相同的变量名http_return_status_label_1和http_return_status_count_1覆盖了它们,第二组数据应该命名为http_return_status_label_2和http_return_status_count_2,否则第一组数据会丢失。

  2. 未指定绘图的目标Axes:squarify.plot()默认会使用当前活跃的Matplotlib Axes对象,如果你不手动指定ax参数,两次绘图都会默认画到同一个Axes里。你不需要给ax1.subplot赋值,直接在squarify.plot()里传入ax=ax1和ax=ax2即可指定各自的绘图区域。

  3. 全局关闭轴的问题:plt.axis('off')会关闭整个Figure的轴,应该分别对每个子图调用axis('off'),避免影响布局。

修正后的完整代码:

import matplotlib.pyplot as plt
import squarify

# 第一组数据
http_return_status_label_1 = ['200','300','500']
http_return_status_count_1 =[4,8,12]

# 第二组数据,修正变量名
http_return_status_label_2 = ['2000','3000','5000']
http_return_status_count_2 =[40,88,102]

# 创建1行2列的子图布局
fig, (ax1, ax2) = plt.subplots(1, 2, subplot_kw={'aspect': 'equal'})

# 分别指定ax参数绘制到对应子图
squarify.plot(sizes=http_return_status_count_1, label=http_return_status_label_1, alpha=.8, ax=ax1)
squarify.plot(sizes=http_return_status_count_2, label=http_return_status_label_2, alpha=.8, ax=ax2)

# 关闭每个子图的轴
ax1.axis('off')
ax2.axis('off')

plt.tight_layout() # 自动调整子图间距
plt.show()

这样就能在同一个Figure里得到两个独立的treemap了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:02:47