【发布时间】:2014-07-24 07:20:25
【问题描述】:
基本上我一直在尝试从数据框创建图。首先,我定义数据框(glist),然后定义 y 值(alist)以针对日期进行绘图。它们都单独工作,但不在此循环中。有什么建议吗?
编辑:现在的问题是,当我调用它们时,第一个情节正在为所有其他情节重新绘制。我曾尝试在循环开始时使用 plt.clr() 但似乎不起作用。
x,y,= (0.5,-.16)
fmt = DateFormatter('%m/%d/%Y')
nlist=[]
def plots():
Totrigs,TotOrDV,TotOrH,TotGas,TotOil,TotBit,ABFl,ABOr,SKFl,SKOr,BCOr,MBFl,MBOr = dataforgraphs()
glist = [Totrigs,ABFl,ABOr,SKFl,SKOr,BCOr,MBFl,MBOr]
alist = [['Total Rigs'],['GAS','OIL','BIT'],[['HZ','DIR/VERT']],[['GAS','OIL']],[['HZ','DIR/VERT']],['OIL'],[['HZ','DIR/VERT']],[['HZ','DIR/VERT']]]
for i,k in zip(glist,alist):
fig = i.plot(y=k,linewidth=2.0, legend=False)
fig.patch.set_facecolor('#EEECE1')
fig.xaxis.set_major_formatter(fmt)
fig.legend(loc= 'upper center',bbox_to_anchor=(x,y),fancybox=True)
nlist.append(fig)
return (nlist)
def Totgraph():
nlist = plots()
Totrigs = nlist[0]
plt.savefig('C:\\Python33\\XcelFiles\\Pics\\Totrigs.png',bbox_inches='tight')
plt.clf()
def ABFLgraph():
nlist = plots()
ABFl = nlist[1]
plt.title('Alberta Fluid Type')
plt.savefig('C:\\Python33\\XcelFiles\\Pics\\ABFl.png',bbox_inches='tight')
【问题讨论】:
-
你在哪一行得到错误?
-
我在想
fig = i.plot(y=alist[x],sharex=True, linewidth=2.0, legend=False)是你的问题。在这种情况下,您的y = alist[x]是一个列表。我认为 y 不能是一个列表,这就是它给你这个错误的原因。 -
我应该把 alist 变成什么以便它读取它作为 y 值的列标签?
-
@Elias
DataFrame上的plot方法采用参数列表(同样sharex默认为True)。没有更多信息,很难回答。错误在哪一行?y和fmt是什么?您所有的DataFrames是否都具有相同的列和类型?为什么要使用x索引而不是直接使用k? -
哪个错误?
ValueError?因为那不是有效的语法,但也不是您的代码中的...
标签: python loops matplotlib pandas