Matplotlib实战避坑手册:从figsize陷阱到中文乱码的终极解决方案
刚接触Matplotlib时,我总以为跟着教程敲完代码就能完美运行。直到某次实训作业,我的折线图在保存时突然报错,中文标签全变成方框,而figsize=(10,10)设置的图像尺寸和预期相差甚远——这才意识到,官方文档里那些"简单示例"背后藏着无数新手杀手。
1. 为什么figsize=(10,10)实际尺寸总不对?
很多教程会告诉你用plt.figure(figsize=(10,10))设置图像尺寸,但很少有人解释这个"10"到底代表什么单位。实际上:
- 英寸与像素的换算陷阱:figsize参数的单位是英寸,而屏幕显示使用像素。在72dpi的系统中,10英寸≈720像素,但不同设备DPI可能不同
- 显示比例的影响:Jupyter Notebook等环境会自动调整显示比例,导致图像看起来比实际尺寸小
真实场景测试数据对比:
| 环境 | figsize设置 | 实际显示尺寸(像素) | 可能原因 |
|---|---|---|---|
| PyCharm | (10,10) | 800×800 | 默认DPI=80 |
| Jupyter Lab | (10,10) | 600×600 | 内置缩放比例0.75 |
| 导出PDF | (10,10) | 720×720 | 标准PDF DPI=72 |
提示:要获得精确尺寸,建议在保存图片时显式指定dpi参数:
plt.savefig('plot.png', dpi=100)
跨平台解决方案:
python复制import matplotlib.pyplot as plt
# 最佳实践方案
fig = plt.figure(figsize=(10,10), dpi=100) # 同时设置DPI
plt.plot([1,2,3],
