plt.savefig导出pdf为空白
时间: 2025-04-26 18:39:43 浏览: 50
### 使用 Matplotlib 保存 PDF 文件时出现空白的解决方案
当遇到 `matplotlib` 的 `savefig()` 函数导出 PDF 文件为空白的问题时,通常是因为绘图命令执行顺序不当或参数设置不合理。以下是几种有效的解决方法:
#### 方法一:调整保存和展示图像的顺序
确保在调用 `plt.show()` 之前先调用了 `plt.savefig()`。这是因为 `show()` 会清空当前图形缓存,如果在此之后再尝试保存,则只会得到一张空白页。
```python
import matplotlib.pyplot as plt
x = range(4)
y = range(5, 9)
plt.plot(x, y, '--*b')
plt.xlabel('step')
plt.ylabel('result')
plt.title('experiment')
# 先保存再显示
plt.savefig('output.pdf', format='pdf')
plt.show()
```
这种方法遵循了最佳实践[^3]。
#### 方法二:关闭交互模式
有时开启交互模式可能会干扰正常的绘制流程。可以通过禁用此功能来解决问题。
```python
import matplotlib.pyplot as plt
plt.ioff()
# 绘制图表...
plt.figure(figsize=(8,6))
plt.plot([1,2], [3,4])
# 设置其他属性...
# 关闭并释放内存中的窗口对象
plt.close()
# 手动创建新Figure实例用于保存
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([1,2],[3,4])
fig.savefig("test.pdf", bbox_inches="tight")
```
这段代码展示了如何通过管理 Figure 对象生命周期的方式避免潜在冲突[^4]。
#### 方法三:指定更详细的保存选项
对于某些特定情况下(比如涉及中文字符),适当增加额外参数可以帮助改善输出质量。
```python
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
data_x=[0,1,2]; data_y=[7,8,9]
plt.plot(data_x,data_y,label=u'line')
plt.legend(loc='best')
plt.grid(True,axis='y',ls=':',lw=1,color='#7c7c7c',alpha=0.5)
plt.savefig('./example.pdf',
dpi=300,
facecolor='w',
edgecolor='w',
orientation='portrait',
papertype=None,
format='pdf',
transparent=False,
bbox_inches='tight',
pad_inches=0.1,
metadata=None)
plt.show()
```
上述配置不仅解决了空白问题还提高了最终文档的质量[^5]。
阅读全文
相关推荐



















