3

我有一个可以通过 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

如果用户希望每次他可以设置时弹出 GUI matplotlib.interactive(True),并且如果他想保存图形,他将必须传递一个Axe对象然后执行axe.get_figure().savefig('anywhere.png')

EDIT2:仍然对解决方案感到不安:

  • 如果用户不传递Axe对象,他可能很难做到savefig,允许savefig参数不是更好吗?或者我应该总是返回Axe生成的而不是myplot
4

0 回答 0