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