2011-10-24 60 views
1

我有一段时间试图用pyplot标记数据的噩梦。Pyplot - 标签图

我目前正在绘制所有像这样的数据:plt.plot(data)。

数据是具有总成本,然后其他列的针对子成本

我想添加图例,并适当地标记每个所述数据列表的列的阵列。虽然我似乎无法让传说起作用。 plt.legend(('Column 1','Column 2','etc。),loc = 1)和其他类似的东西不起作用。如果我单独绘制每列,出于某种原因它会停止正常工作。

我期待并感谢您的任何建议。

编辑:

for i in range(1,days): 
    data.append(totalCost(i)) #cost returns retVal, construction, gas, and wage 
plt.ylabel('Cost in US Dollars') 
plt.title('Economic Cost over Time') 

plt.plot(data) 
plt.legend(('Total','Construction','Gas','Wage'),loc=1) # Legend is blank 

编辑2: 而不必在我的程序在不同地点的代码,我重组并集中一切。随着这些变化,传奇开始工作,一切似乎都解决了。我不知道这个问题是什么。

plt.plot(data) 
plt.legend(('Total Cost', 'Construction Cost', 'Gas Cost','Wage Cost'),loc=0) 
plt.grid(False) 
plt.xlabel('Time (Days)') 
plt.ylabel('Cost in US Dollars') 
plt.title('Economic Cost over Time') 
print (' Close the Graph to Continue Using this Model') 
plt.show() 
+0

您能否提供更完整的示例代码?我有预感,xdata和ydata的分配有问题。什么应该是X轴?第一列数据是什么? – ianalis

+0

我添加了一些源代码。 –

回答

2

您的代码可以正确地显示一个传奇,与Matplotlib 1.1的Mac OS X,但前提是:

  • Matplotlib放在交互方式开头:plt.ion()
  • 代码与plt.show()结束, 例如。

升级Matplotlib可能也有帮助。

最后一个可能的解决方案是确实用自己的标签分别绘制每条线:plt.plot(<single line data>, label='Construction')等,并将图例与plt.legend(loc='best')一起绘制。

+0

我正在运行python3.2和最新更新的matplotlib的一个端口,以便它可以与我的64位计算机一起工作。 –

+1

@NathanTornquist:你有没有在开始时试过'ion()'? – EOL

+0

我还没有试过ION,当我自己绘制数据时,显示的结果不再准确。所有的线都在中间为零。 –