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)たい場合、および Figure を保存したい場合は、Axeオブジェクトを渡してから を実行する必要がありますaxe.get_figure().savefig('anywhere.png')

EDIT2:まだ解決策に不快感を感じています:

  • ユーザーがオブジェクトを渡さない場合Axe、彼が行うのは難しいかもしれません。引数savefigを許可する方がよいのではないでしょうか? savefigまたは、常にAxe代わりに生成されたものを返す必要がありmyplotますか?
4

0 に答える 0