编写函数嵌入matplotlib图调用的最佳实践

时间:2013-08-05 13:24:29

标签: python matplotlib

我有一个可以通过matplotlib中的绘图表示的对象。现在我正在做这样的事情:

from matplotlib import pyplot as plt

class MyObject(object):

    def __init__(self, my_list):
        self.my_list = my_list

    def superplot(self, show=False, axe=None, *args, **kwargs):
        ax = axe or plt.figure(figsize=(10,10)).add_subplot(1,1,1)
        plot = ax.plot(self.my_list, *args, **kwargs)
        if show:
            plt.show()
        else:
            return plot

...但我真的认为应该有一个更好的方法。是否有任何约定,或者只是一种更聪明的方法来允许将来的用户配置绘图,就像他们使用标准的matplotlib函数一样?

编辑:确保我理解

from matplotlib import pyplot as plt

class MyObject(object):

    def __init__(self, my_list):
        self.my_list = my_list

    def superplot(self, axe=None, *args, **kwargs):
        ax = axe or plt.figure(figsize=(10,10)).add_subplot(1,1,1)
        myplot = ax.plot(self.my_list, *args, **kwargs)
        return myplot

如果用户希望每次设置matplotlib.interactive(True)时都弹出GUI,并且如果他想保存图形,则必须传递Axe对象,然后执行{{1} }。

EDIT2: 仍然不满意解决方案:

  • 如果用户没有传递axe.get_figure().savefig('anywhere.png')对象,他可能很难做Axe,允许savefig参数不是更好吗?或者我应该始终返回生成的savefig而不是Axe

0 个答案:

没有答案