You need to enable JavaScript to run this app. 如何修改Matplotlib3类堆叠柱状图代码以设置生成图表尺寸
优惠活动
大模型
产品
解决方案
定价
更多

如何修改Matplotlib3类堆叠柱状图代码以设置生成图表尺寸

堆叠柱状图自定义尺寸设置失效的解决方案

失效原因

之前使用plt.figure()设置尺寸不生效,核心是调用顺序错误:
原代码中先通过fig, ax = plt.subplots()创建了专属画布,若在这行代码之后再执行plt.figure(),相当于新建了一个完全独立的空白画布,和已经绘制了堆叠柱状图的画布没有关联,自然无法修改原有图表的尺寸。

可行实现方案

  • 方案1(推荐):直接将自定义尺寸参数传入plt.subplots(),无需单独调用plt.figure(),避免顺序问题
  • 方案2:若习惯单独写plt.figure(),必须将plt.figure()的调用放在plt.subplots()之前,此时subplots会复用提前设置好参数的画布

修改后完整代码(方案1)

import matplotlib.pyplot as plt

labels = ['G1', 'G2', 'G3', 'G4', 'G5']
p1 = [20, 35, 30, 35, 7]
p2 = [25, 32, 34, 20, 55]
p3 = [21, 361, 341, 205, 151]

width = 0.35       # 柱子宽度,也可传入和x序列长度一致的数组
# 直接传入自定义画布参数,和你之前用的参数完全兼容
fig, ax = plt.subplots(figsize=(14, 7), dpi=80, facecolor='w', edgecolor='k')

ax.bar(labels, p1, width, label='p1')
ax.bar(labels, p2, width, bottom=p1, label='p2')
ax.bar(labels, p3, width, bottom=p2, label='p3')

ax.set_ylabel('Scores')
ax.set_title('Scores by group and gender')
ax.legend()

plt.show()

方案2的调整方式

如果要保留单独写plt.figure()的习惯,仅需将代码调整为如下顺序即可生效:

# 先创建带自定义参数的画布
plt.figure(num=None, figsize=(14, 7), dpi=80, facecolor='w', edgecolor='k')
# 再创建坐标轴,此时会复用刚才设置好参数的画布
fig, ax = plt.subplots()

内容的提问来源于stack exchange,提问作者blue-sky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 21:45:09