2016-11-24 7 views
-2

私の凡例は右上に表示されますが、AAPLとIBMでは1文字と表記されています。何が間違っているのかわからない凡例をチャート上に正しく表示するには

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

これはmatplotlib.legend()のドキュメントです。

単に、文字列の反復可能で、各凡例アイテムの いずれかを、この関数を呼び出して、(例えば、プロット を介して)既に軸上に存在する行の凡例を作ること。たとえば:

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

あなたはおそらくもplt.show()を追加する必要があります。あなたは私が考える任意のラベルを使用していけないので、

だからあなたが使用する必要があります。

plt.legend([s]) 

あなただけの1つの文字は、おそらく事実によって引き起こされる参照エラーをその入力オーバー伝説の繰り返し処理(S =「AAPL」 )、行1(s [0]は 'A')のラベルテキストの最初の項目(s [0])をとります。ループの第2の反復について 「I」(...ようにS [0] =「I」は、S、この場合に1 =「B」及びため)

legend()

は非常に思われるため、同じ問題が発生しましたカスタマイズ可能なのはmatplotlib docsです。

だから、これは私のための結果である:

enter image description here

:中

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() 

結果

関連する問題