matplotlib:创建新图形并保存到文件

Posted

技术标签:

【中文标题】matplotlib:创建新图形并保存到文件【英文标题】:matplotlib: creating new figure and saving to file 【发布时间】:2014-08-13 20:49:58 【问题描述】:

我正在尝试使用matplotlib 生成不同的数字:

import matplotlib.pyplot as plt

for item in item_list:
    plt.imshow(item)
    plt.grid(True)
    # generate id
    plt.savefig(filename + id)
    plt.close()

该循环确实生成了许多文件,但它们似乎显示了不同图形的叠加,而如果我将这些项目逐一绘制,它们看起来就大不相同了。

如何确保每个项目都独立绘制并保存到文件中?

【问题讨论】:

plt.savefig 保存当前图形,只要您不创建新图形,它就会将所有内容添加到相同的图形中,从而叠加。 How do I tell Matplotlib to create a second (new) plot, then later plot on the old one? 的可能重复项 【参考方案1】:

您需要创建一个新的图形对象,或者清除轴。

清轴示例代码:

import matplotlib.pyplot as plt
y_data = [[1,1],[2,2],[3,3]]  #just some dummy data
x = [0,1]  
fig,ax = plt.subplots()
for y in y_data:   
    #generate id   
    ax.cla()  #clear the axis
    ax.plot([0,1],y)
    fig.savefig(filename + id)

新图形对象示例:

import matplotlib.pyplot as plt
y_data = [[1,1],[2,2],[3,3]]  #just some dummy data
x = [0,1]
for y in y_data:  
    #generate id  
    fig,ax = plt.subplots()  #create a new figure
    ax.plot(x,y)
    fig.savefig(filename + id)

希望这有助于您入门。

【讨论】:

@Bob 而不是ax.plot()ax.imshow(...) 由于某些原因,我没有得到与零元素相对应的漂亮白色。是 jpeg 的问题吗? @Bob 嗯,不知道更多细节很难说。我发现 jpeg 不太可能是问题所在。这可能取决于您使用的colormap。这是我发现在这方面有用的链接:matplotlib.org/examples/color/colormaps_reference.html @Bob 如果问题仍然存在,我建议您浏览 SO 寻求解决方案,或者如果您没有找到所需的内容,请打开一个新问题。也考虑接受我对这个问题的回答。 ;)

以上是关于matplotlib:创建新图形并保存到文件的主要内容,如果未能解决你的问题,请参考以下文章

为 matplotlib 图自动创建新图形

在 matplotlib 中为旋转的 3D 图形制作动画

Python机器学习(七十)Matplotlib 保存图形

Matplotlib 图形图像转 base64

将 Matplotlib 图形保存为全屏图像

使用 matplotlib 保存散点图动画