【问题标题】:Matplotlib: plot multiple graphs using same figure, without them overlappingMatplotlib:使用相同的图形绘制多个图形,而不是它们重叠
【发布时间】:2011-03-14 14:23:32
【问题描述】:

我有一个类,我用它来绘制东西然后将它们保存到一个文件中。这是它的简化版本:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

class Test():
    def __init__(self, x, y, filename):

        fig = plt.figure(1)
        ax = fig.add_subplot(111)

        ax.plot(x, y, 'D', color='red')

        ax.set_xbound(-5,5)
        ax.set_ybound(-5,5)

        plt.savefig('%s.png' % filename)


test1 = Test(1,2, 'test1')
test2 = Test(2,4, 'test2')

结果如下:

测试1

测试2

问题是 test2 图像也有来自 test1 的点。这些图表是在循环中动态生成的,因此我无法对数字进行硬编码。

我可以制作一个计数器并将其传递给类构造函数,但我想知道是否有更优雅的方法来做到这一点。我尝试删除 test1 对象,但没有做任何事情。

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    你可以使用图的clf方法在你完成一个后清除图。此外,pyplot.clf 将清除当前数字。

    或者,如果您只想要一个新图形,则调用 pyplot.figure 而不使用明确的 num 参数 - 它会自动递增,因此您不需要保留计数器。

    【讨论】:

    • 效果很好。谢谢你。我只需要一个新数字,所以我省略了num 参数。直到现在我才知道我能做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多