如何修改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
相关产品推荐
相关产品推荐

