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

相同numpy与matplotlib版本下Python版本差异致绘图异常的技术问询

问题分析:Python版本差异导致Matplotlib图表异常

环境版本

  • numpy:1.26.4
  • matplotlib:3.8.3

现象描述

在Python 3.8中运行代码时图表绘制完全正常,但切换到Python 3.12后,出现两个核心问题:

  • 图表渲染失真
  • x轴标签无法修改

复现代码

import matplotlib.pyplot as plt
import numpy as np

plt.figure(figsize=(13, 4))

labels = ['G1', 'G2', 'G3', 'G4', 'G5']
first = [20, 34, 30, 35, 27]
second = [25, 32, 34, 20, 25]
third = [21, 31, 37, 21, 28]
fourth = [26, 31, 35, 27, 21]


plt.subplot(131)
x = np.arange(len(labels))  # x轴刻度标签位置
width = 0.25  # 柱子的宽度

plt.bar(x - width/2, first, width, label='1')
plt.bar(x + width/2, second, width, label='2')
plt.ylabel('Scores')
plt.title('2 datasets')

plt.xticks(x, labels=labels)
plt.legend()

plt.subplot(132)
x = np.arange(len(labels))  
width = 0.25 

plt.bar(x - width, first, width, label='1')
plt.bar(x, second, width, label='2')
plt.bar(x + width, third, width, label='3')
plt.ylabel('Scores')
plt.title('3 datasets')

plt.xticks(x, labels=labels)
plt.legend()

plt.subplot(133)
x = np.arange(len(labels)) 
width = 0.2 

plt.bar(x - 1.5*width, first, width, label='1')
plt.bar(x - 0.5*width, second, width, label='2')
plt.bar(x + 0.5*width, third, width, label='3')
plt.bar(x + 1.5*width, fourth, width, label='4')
plt.ylabel('Scores')
plt.title('4 datasets')

plt.xticks(x, labels=labels)
plt.legend()

plt.show()

原因解析

即使numpy和matplotlib版本一致,Python 3.12与3.8的底层差异仍会引发问题,核心原因包括:

  1. 后端适配不完善:matplotlib 3.8.3发布时,Python 3.12刚正式推出,部分GUI后端(如TkAgg)对Python 3.12的底层API调用逻辑适配不足,导致渲染失真、刻度标签失效。
  2. 参数处理逻辑冲突:Python 3.12对函数参数的解析细节有微调,matplotlib中plt.xticks()的参数传递在该环境下出现异常,导致标签设置未被正确执行。
  3. 系统依赖版本差异:Python 3.12环境的系统依赖库(如fontconfig、freetype)版本通常高于Python 3.8,这些底层库的变化会间接影响matplotlib的渲染效果。

解决建议

  • 升级matplotlib至3.9.x及以上版本,该系列版本已针对Python 3.12完成全面兼容性优化。
  • 切换matplotlib后端,例如在代码开头添加plt.switch_backend('QtAgg')或plt.switch_backend('Agg'),避开有问题的后端。
  • 检查Python 3.12环境的系统依赖,确保安装了对应后端所需的库(如TkAgg后端需要libtk8.6,QtAgg需要Qt5/Qt6相关包)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:10:04