无法在图表上正确显示图例

时间:2016-11-24 21:44:31

标签: python-3.x

我的传奇显示在右上角,而不是说AAPL和IBM它说了一个字母。无法弄清楚什么是错的

import quandl
import pandas as pd
import matplotlib.pyplot as plt

def get_mean_volume(symbol):
    df = quandl.get("YAHOO/"+str(symbol))[::-1]
    return df[['High', 'Adjusted Close']]


stock = ['AAPL', 'IBM']

for s in stock:
    plt.plot(get_mean_volume(s))
    plt.legend(s)
    plt.ylabel('Price')
    plt.xlabel('Date')

1 个答案:

答案 0 :(得分:1)

这是来自matplotlib.legend()文档。

  

为轴上已存在的线创建图例(通过图表   例如),只需使用可迭代的字符串调用此函数,   每个图例项目一个。例如:

plt.plot([1, 2, 3])
plt.legend(['A simple line'])

您可能还应添加plt.show()

因为你不使用任何标签,我认为你应该使用:

plt.legend([s])

您只看到一个字母的错误可能是由于图例迭代输入(s =" AAPL")并获取标签文本的第一个项目(s [0])对于第1行(s [0]是' A')。 对于循环的第二次迭代,对于' I' (因为在这种情况下,s [0] =' I' s 1 =' B'等等......)

legend()似乎可以自定义,只需查看matplotlib docs即可。

所以这就是我的结果:

import matplotlib.pyplot as plt

stock = ['AAPL']

for s in stock:
    plt.plot([1,2,3])
    plt.legend([s])
    plt.ylabel('Price')
    plt.xlabel('Date')
    plt.show()

结果:

enter image description here