我有一个名为afplot的数据框:
apple_fplot = apple_f1.groupby(['Year','Domain Category'])['Value'].sum()
afplot = apple_fplot.unstack('Domain Category')
我现在需要为afplot的每一列生成一个绘图,并且需要将每个绘图保存为唯一的文件名。
我一直试图通过for循环来做到这一点,(我知道效率低下),但似乎无法做到正确。
for index, column in afplot.iteritems():
plt.figure(index); afplot[column].plot(figsize=(12,6))
plt.xlabel('Year')
plt.ylabel('Fungicide used / lb')
plt.title('Amount of fungicides used on apples in the US')
plt.legend()
plt.savefig('C:/Users/User/Documents/Work/Year 3/Project/Plots/apple_fplot{}'.format(index))
我不确定我是否会以正确的方式进行此操作,但整个想法是在每次迭代完成时重置绘图,仅绘制 下一列的线图,然后将其保存为新的文件名。
答案 0 :(得分:1)
For i = 2 To FinalRowI
e1 = Trim(wi.Range("B" & i).Value2)
If CBool(Application.CountIf(wn.Columns(3), e1)) Or CBool(Application.CountIf(wr.Columns(1), e1)) Then
wi.Cells(i, "A").EntireRow.Cut _
Destination:=wr.Range("A" & Rows.Count).End(xlUp).Offset(1)
End If
Next i
迭代器返回(df.iteritems()
,column name
)对([请参阅文档])1。所以你可以简化:
series
for col, data in afplot.iteritems():
ax = data.plot(title='Amount of fungicides used on apples in the US'))
ax.set_ylabel('Fungicide used / lb')
plt.gcf().savefig('C:/Users/User/Documents/Work/Year 3/Project/Plots/apple_fplot{}'.format(col))
plt.close()
应该已经是'年',因为它似乎是xlabel
的{{1}}。默认情况下,name
为index
。请参阅additional plot parameters。