Pyplot - 标签绘图
我在用pyplot给数据加标签的时候遇到了麻烦。
我现在是这样画图的:plt.plot(data)。
这里的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()
2 个回答
0
你可以不直接在plt.legend()里写标题,而是先创建一个标题的列表,然后把这个列表传给你的图表。比如,你可以这样做:
legends = ['总成本', '建筑成本', '燃气成本', '工资成本']
plt.plot(data, labels=legends)
plt.legend()
2
你的代码可以在Mac OS X上正确显示图例,前提是:
- 在开始时将Matplotlib设置为交互模式:
plt.ion()
- 代码最后要加上
plt.show()
,比如这样。
升级Matplotlib版本也可能会有帮助。
最后一个可能的解决办法是,确实可以单独绘制每条线,并给它们各自加上标签:plt.plot(<单条线的数据>, label='Construction')
,然后用plt.legend(loc='best')
来绘制图例。