我正在尝试用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()
答案 0 :(得分:2)
您的代码在Mac OS X上使用Matplotlib 1.1正确显示图例,前提是:
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()