2016-11-24 3 views
-2

meine Legende zeigt oben rechts, aber eher als AAPL und IBM sagt es einen Brief. kann nicht herausfinden, was nicht stimmtKann die Legende nicht korrekt auf dem Diagramm angezeigt werden

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

Antwort

1

Dies ist von der Matplotlib.legend() -Dokumentation.

Um eine Legende für die Linien zu machen, die bereits auf den Achsen vorhanden sind (über Plot zum Beispiel), einfach mit einem iterable von Strings diese Funktion aufrufen, eine für jede Legende Artikel. Zum Beispiel:

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

sollten Sie wahrscheinlich auch hinzufügen, ein plt.show().

So, da Sie Etiketten nicht verwenden Ich denke, Sie verwenden sollten:

plt.legend([s]) 

Der Fehler, dass Sie nur einen Buchstaben sehen wahrscheinlich durch die Tatsache, dass Legende iteriert über den Eingang (s = „AAPL“ verursacht wird,) und nimmt den ersten Eintrag (s [0]) für den Etikettentext für Zeile 1 (s [0] ist 'A'). Für die zweite Iteration der Schleife des gleiche geschieht für den 'I' (Weil s [0] = 'I' in diesem Fall. S 1 = 'B' und so weiter ...)

legend() scheint ziemlich anpassbare nur überprüfen Sie die matplotlib docs.

So ist dies das Ergebnis für mich:

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

Ergebnisse in:

enter image description here

Verwandte Themen