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

如何调整Matplotlib饼图尺寸,使其与其他绘图高度对齐?

多子图高度对齐解决方案

问题根源

饼图默认强制轴为等轴比例(正方形),而折线图的轴比例随数据自动调整,导致三者高度不匹配。

具体解决方法

方法1:取消饼图的等轴约束

绘制饼图后添加代码,让饼图轴的高度与折线图对齐(饼图会变为椭圆):

# 饼图绘制完成后添加
axes3.set_aspect('auto')

方法2:固定子图宽度比例,适配饼图正方形高度

修改初始化子图的代码,通过宽度比例分配,让折线图高度与饼图的正方形高度一致:

# 替换Init部分的subplots代码
self.ui.figure, self.ui.axes = plt.subplots(1, 3, width_ratios=[2, 2, 1])

这里width_ratios可根据实际布局需求调整数值,确保饼图保持正方形的同时,三者高度统一。

方法3:用GridSpec精细控制布局

若需要更精准的尺寸控制,替换初始化代码为GridSpec实现:

# 替换原Init部分代码
from matplotlib.gridspec import GridSpec

self.ui.figure = plt.figure()
gs = GridSpec(1, 3, width_ratios=[2, 2, 1])
axes1 = self.ui.figure.add_subplot(gs[0])
axes2 = self.ui.figure.add_subplot(gs[1])
axes3 = self.ui.figure.add_subplot(gs[2])
self.ui.axes = [axes1, axes2, axes3]

self.ui.canvas = FigureCanvas(self.ui.figure)
self.ui.QVLayout.addWidget(self.ui.canvas)

此方式能确保所有子图高度完全一致,饼图保持正方形形态。

方法4:让折线图也适配正方形(可选)

若希望三个子图均为正方形,给折线图轴添加等轴约束:

axes1.set_aspect('equal', adjustable='box')
axes2.set_aspect('equal', adjustable='box')

额外提示

调整后保留self.ui.figure.tight_layout(),可优化标题、轴标签的布局效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 15:53:34