为什么python制作图表空白_解决Python plt.savefig 保存图片时一片空白的问题

更新

这里我会列出对本文的更新。

2017 年 9 月 28 日:修正几处错字,优化排版。

问题

当使用如下代码保存使用 plt.savefig 保存生成的图片时,结果打开生成的图片却是一片空白。

import matplotlib.pyplot as plt

""" 一些画图代码 """

plt.show()

plt.savefig("filename.png")

原因

其实产生这个现象的原因很简单:在 plt.show() 后调用了 plt.savefig() ,在 plt.show() 后实际上已经创建了一个新的空白的图片(坐标轴),这时候你再 plt.savefig() 就会保存这个新生成的空白图片。

解决

知道了原因,就不难知道解决办法了,解决办法有两种:

在 plt.show() 之前调用 plt.savefig();

import matplotlib.pyplot as plt

""" 一些画图代码 """

plt.savefig("filename.png")

plt.show()

画图的时候获取当前图像(这一点非常类似于 Matlab 的句柄的概念):

# gcf: Get Current Figure

fig = plt.gcf()

plt.show()

fig1.savefig('tessstttyyy.png', dpi=100)

以上这篇解决Python plt.savefig 保存图片时一片空白的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

### 使用 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]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值