2016-09-07 3 views
0

Ich habe ein Problem herauszufinden, wie man Matplotlib erzwingt, um eine Legende hinzuzufügen, wo ich will.Matplotlib globale Legende für viele Unterplots

Die Zahlen i zur Zeit wie folgt aussehen haben:

n = 1 
trn = True 
for i in diff.keys(): 
    plt.subplot(8, 4, n) 
    plt.xlim([0, rounds + 1]) 
    plt.locator_params(axis='y', nbins=5) 
    if PEPTIDE_KD[i] == 1e-2: 
     plt.plot(x_cord, [x[0] for x in diff[i]], 'ro--', label='asd') 
     plt.plot(x_cord, [x[1] for x in diff[i]], 'rv--', label='bsd') 
    else: 
     plt.plot(x_cord, [x[0] for x in diff[i]], 'bo--', label='asd') 
     plt.plot(x_cord, [x[1] for x in diff[i]], 'bv--', label='csd') 
    plt.title(i) 
    n += 1 
    if n == 33 and trn: 
     n = 1 
     trn = False 
     plt.suptitle('Ligand energies') 
     plt.locator_params(axis='y', nbins=5) 
     plt.subplots_adjust(hspace=0.35) 
     plt.show() 

plt.legend(bbox_to_anchor=(-0.05, 1), loc=1) 
plt.locator_params(axis='y', nbins=5) 
plt.subplots_adjust(hspace=0.35) 
plt.show() 

Allerdings würde Ich mag platzieren die Legende: enter image description here

enter image description here

ich diese 2 ausgelagerten Grundstück mit dem folgenden Skript erzeugen auf der linken Seite des allerersten Teilplots oder auf der rechten Seite des letzten Teilplots in der ersten Zeile.

Ich kann dies mit einer if line == 0 bla bla tun, aber das Problem ist, wie Sie in den Plots ich angehängt, dass zum Beispiel die letzte Handlung nur blaue Daten enthält, daher nur die blaue Legende zeigen wird. Ich möchte auch eine vollständige Legende (rot und blau) an den gleichen Ort legen. Ich weiß nicht einmal, wo vorher blaue und rote Parzellen liegen.

Ist das möglich?

Antwort

Verwandte Themen