2017-05-07 7 views
1

In einem meiner Diagramme habe ich eine sekundäre Achse verwendet. Mein Code erstellt zwei verschiedene Legenden und zeigt die Legenden in meinem Diagramm an. Das ist mein Code:Erstellen Sie eine Legende außerhalb des Diagramms

fig3 = plt.figure() 
ax3 = fig3.add_subplot(111) 
ax4 = fig3.add_subplot(111) 

ax4 = ax3.twinx() 
line6 = ax3.plot(threshold, different_costs, '-r', label = 'Costs differences', linewidth = 2.0) 
line7 = ax4.plot(threshold, costs1, '-b', label = 'Costs of Model 1 (OFF)', linewidth = 2.0) 
line9 = ax4.plot(threshold, costs2, '-y', label = 'Costs of Model 2 (STANDBY)', linewidth = 2.0) 

ax3.set_xlabel("Threshold") 
ax3.set_ylabel("Costs savings") 
ax4.set_ylabel("Total costs") 

plt.suptitle("Costs savings of using MODEL 1") 
plt.legend() 

plt.show() 

Wie kann ich eine Legende mit drei Etiketten erstellen? Und wie kann ich diese Legende außerhalb meiner Grafik zeigen?

+0

Bitte lesen Sie meine Antwort auf Ihre Frage. Lass es mich wissen, wenn es funktioniert :) – Chuck

+0

Es funktioniert! Aber jetzt kann ich das letzte Etikett nicht lesen (Kosten von Model 2 (STANDBY)) ... Weißt du wie ich das lösen kann? – Kuijpers

+0

Sie müssen möglicherweise mit verschiedenen Zahlen innerhalb 'bbox' experimentieren, um in den gesamten Text zu passen. Wenn die Antwort Ihr Problem gelöst hat, vergessen Sie nicht zu upvoten und zu akzeptieren. – Chuck

Antwort

0

Unter diesem Teil des Codes:

line6 = ax3.plot(threshold, different_costs, '-r', label = 'Costs differences', linewidth = 2.0) 
line7 = ax4.plot(threshold, costs1, '-b', label = 'Costs of Model 1 (OFF)', linewidth = 2.0) 
line9 = ax4.plot(threshold, costs2, '-y', label = 'Costs of Model 2 (STANDBY)', linewidth = 2.0) 

Um alle Linien auf die gleiche Legende zu erhalten, schreiben Sie:

lns = line6 + line7 + line9 
labels = [l.get_label() for l in lns] 
plt.legend(lns, labels) 

Ihre Legende Um außerhalb des Grundstücks, auf diese Antwort verweisen How to put the legend out of the plot, und Sie können schreiben:

plt.legend(lns, labels, loc='upper right', bbox_to_anchor=(0.5, -0.05)) 

Für einige Daten Beispiel:

fig3 = plt.figure() 
ax3 = fig3.add_subplot(111) 
ax4 = fig3.add_subplot(111) 

ax4 = ax3.twinx() 
line6 = ax3.plot(range(0,10), range(0,10), '-r', label = 'Costs differences', linewidth = 2.0) 
line7 = ax4.plot(range(10,15), range(10,15), '-b', label = 'Costs of Model 1 (OFF)', linewidth = 2.0) 
line9 = ax4.plot(range(0,5), range(0,5), '-y', label = 'Costs of Model 2 (STANDBY)', linewidth = 2.0) 

ax3.set_xlabel("Threshold") 
ax3.set_ylabel("Costs savings") 
ax4.set_ylabel("Total costs") 

plt.suptitle("Costs savings of using MODEL 1") 

lns = line6 + line7 + line9 
labels = [l.get_label() for l in lns] 
plt.legend(lns, labels, loc='upper right', bbox_to_anchor=(0.5, -0.05)) 

plt.show() 

Lines on legend and Legend outside plot

Verwandte Themen