首先,我不得不说我是Python(以及编程本身)的真正初学者,因此这可能是一个愚蠢的问题,但我找不到解决方案。
我从3个不同的.csv文件加载数据,然后进行一些计算,最后我想保存3个热图。我的问题是保存。当我使用plt.savefig('whatever.jpg')
它时,显然只会在循环中保存最后的热图。我尝试将其更改为,plt.savefig('{}.jpg'.format(i))
但是出现错误,并且我不知道如何解决。我将不胜感激!(Anaconda的Python 3)
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
instrumenty = ['gold','sp500','dax']
for i in instrumenty:
i = pd.read_csv(i+'_m.csv', sep=',')
i['Miesiąc'] = pd.DatetimeIndex(i['Data']).month
i['Rok'] = pd.DatetimeIndex(i['Data']).year
i['Zmiana']=i['Zamkniecie'].pct_change()
i_pt = i[1:].pivot_table(index='Rok',columns='Miesiąc',values='Zmiana')
sns.heatmap(i_pt, linewidths=1, cmap='PiYG')
plt.savefig('{}.png'.format(i))
plt.clf()
错误:
FileNotFoundError Traceback (most recent call last)
<ipython-input-30-5729b6a0480f> in <module>()
14 i_pt = i[1:].pivot_table(index='Rok',columns='Miesiąc',values='Zmiana')
15 sns.heatmap(i_pt, linewidths=1, cmap='PiYG')
---> 16 plt.savefig('{}.png'.format(i))
17 plt.clf()
18
C:\Users\user\Anaconda3\lib\site-packages\matplotlib\pyplot.py in savefig(*args, **kwargs)
694 def savefig(*args, **kwargs):
695 fig = gcf()
--> 696 res = fig.savefig(*args, **kwargs)
697 fig.canvas.draw_idle() # need this if 'transparent=True' to reset colors
698 return res
C:\Users\user\Anaconda3\lib\site-packages\matplotlib\figure.py in savefig(self, *args, **kwargs)
1561 self.set_frameon(frameon)
1562
-> 1563 self.canvas.print_figure(*args, **kwargs)
1564
1565 if frameon:
C:\Users\user\Anaconda3\lib\site-packages\matplotlib\backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, **kwargs)
2230 orientation=orientation,
2231 bbox_inches_restore=_bbox_inches_restore,
-> 2232 **kwargs)
2233 finally:
2234 if bbox_inches and restore_bbox:
C:\Users\user\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py in print_png(self, filename_or_obj, *args, **kwargs)
530 renderer.dpi = self.figure.dpi
531 if is_string_like(filename_or_obj):
--> 532 filename_or_obj = open(filename_or_obj, 'wb')
533 close = True
534 else:
即使没有plt.savefig我也做错了,因为结果是一张带有3个图例的奇怪图表,而不是3个图。
您i
在此处覆盖:
instrumenty = ['gold','sp500','dax']
for i in instrumenty:
i = pd.read_csv(i+'_m.csv', sep=',')
更好地使用name
:
for name in instrumenty:
# use `name`
i = pd.read_csv(name +'_m.csv', sep=',')
i['Miesiąc'] = pd.DatetimeIndex(i['Data']).month
i['Rok'] = pd.DatetimeIndex(i['Data']).year
i['Zmiana']=i['Zamkniecie'].pct_change()
i_pt = i[1:].pivot_table(index='Rok',columns='Miesiąc',values='Zmiana')
sns.heatmap(i_pt, linewidths=1, cmap='PiYG')
plt.savefig('{}.png'.format(name))
plt.clf()
这是重要的部分:
plt.savefig('{}.png'.format(name))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句