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