Я пытаюсь создать функцию декоратора @save_fig
, чтобы обернуть вокруг matplotlib
функцию (plot_this()
), чтобы автоматически сохранить вывод.
Я могу заставить декоратор работать правильнои показать / отобразить график.Однако при оценке plt.savefig()
в моем каталоге сохраняется пустой график.
Мне интересно, чего мне не хватает в логике кода декоратора?Вывод должен быть полностью воспроизводим из моего кода ниже.
Спасибо
import matplotlib.pyplot as plt
import pandas as pd
df = pd.DataFrame(data={'foo':list(range(5)), 'bar':list(range(5, 10, 1))})
def save_fig(**param):
def outer(func):
def inner(*args, **kwargs):
ax = func(*args)
if 'filename' in param.keys():
print('filename')
plt.savefig(param['filename'])
elif 'show' in param.keys():
print('show')
plt.show()
else:
return ax
return inner
return outer
@save_fig(**{'filename': 'foo.png'})
def plot_this():
plt.scatter(df['foo'], df['bar'])
plt.show()
if __name__ == "__main__":
plot_this()