Pyplot - 标签图

时间:2011-10-24 21:51:51

标签: python graphing matplotlib

我正在尝试用pyplot标记数据时遇到噩梦。

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

数据是一个数组,其中包含一个总成本列,然后是其他列的子成本

我想添加一个图例并适当标记每个数据列表。我似乎无法让传奇工作。 plt.legend(('列1','列2','等),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()

2 个答案:

答案 0 :(得分:2)

您的代码在Mac OS X上使用Matplotlib 1.1正确显示图例,前提是:

  • Matplotlib在开头处于交互模式:plt.ion()
  • 例如,代码以plt.show()结尾。

升级Matplotlib也可能会有所帮助。

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

答案 1 :(得分:0)

在plt.legend()内部传递标题的指示,您可以创建图例列表并将其传递到您的绘图,即,     legends = ['Total Cost', 'Construction Cost', 'Gas Cost','Wage Cost'] plt.plot(data , labels = legends) plt.legend()