2013-04-28 17 views
5

Mam zestaw działek w pythonie i chcę dodać legendy do każdego z nich osobno. Generuję wykresy w pętli for i chcę dynamicznie dodawać legendy.Dynamicznie dodawaj legendy do działek matplotlib w pytonie

Wyświetlam tylko ostatnią wyświetloną legendę. Chcę, aby wszystkie 9 z nich były wyświetlane:

for q in range(1,10): 
     matplotlib.pylab.plot(s_A_approx, label = q) 
matplotlib.pylab.legend(loc = 'upper left') 
matplotlib.pylab.show() 
+1

Dla mnie to jasne, o co prosisz. Co chcesz zrobić, aby powyższy kod się nie osiągnął? – drs

+0

Nie jestem w stanie uzyskać 9 zestawów legend, których potrzebuję. Dostaję tylko ostatni. Dodałem nawet oświadczenie 'matplotlib.pylab.hold (True)' –

+0

Czy jesteś pewien, że nie chcesz wywołania 'legend' * wewnątrz * pętli? – nobar

Odpowiedz

8

Nie mogę odtworzyć Twojego problemu. Dzięki kilku zmianom w twoim skrypcie, to, czego oczekujesz, działa dla mnie.

import matplotlib.pylab 
import numpy as np 

for q in range(1,10): 
    # create a random, 100 length array 
    s_A_approx = np.random.randint(0, 100, 100) 
    # note I had to make q a string to avoid an AttributeError when 
    # initializing the legend 
    matplotlib.pylab.plot(s_A_approx, marker='.', linestyle='None', label=str(q)) 

matplotlib.pylab.legend(loc='upper left') 
matplotlib.pylab.show() 

resulting plot


Jeśli to pomoże, oto moja wersja matplotlib:

>>> import matplotlib 
>>> matplotlib.__version__ 
'1.0.1' 
Powiązane problemy