Heim  >  Artikel  >  Backend-Entwicklung  >  Wie füge ich mit twinx() Beschriftungen zur Legende in Diagrammen mit sekundären Achsen hinzu?

Wie füge ich mit twinx() Beschriftungen zur Legende in Diagrammen mit sekundären Achsen hinzu?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 04:32:30889Durchsuche

How to Add Labels to the Legend in Plots with Secondary Axes Using twinx()?

Hinzufügen von Beschriftungen zur Legende in Diagrammen mit sekundären Achsen mithilfe von twinx()

Mehrere Achsen in einem einzelnen Diagramm können für die Visualisierung nützlich sein Daten aus unterschiedlichen Quellen oder mit unterschiedlichen Einheiten. Wenn Sie die Funktion „twinx()“ zum Erstellen einer Sekundärachse verwenden, kann es erforderlich sein, Beschriftungen zu den auf der Sekundärachse gezeichneten Linien hinzuzufügen und diese in die Legende aufzunehmen.

Um dies zu erreichen, können Sie entweder eine hinzufügen Separate Legende für die Sekundärachse mit ax2.legend(loc=0). Dieser Ansatz führt jedoch zu zwei separaten Legenden.

Für eine zusammenhängendere Anzeige können alle Beschriftungen mit den folgenden Schritten zu einer einzigen Legende hinzugefügt werden:

  • Erstellen Sie eine Zeilenliste Objekte, die alle auf beiden Achsen gezeichneten Linien darstellen.
  • Erstellen Sie eine Liste von Beschriftungen, die den Linienobjekten entsprechen.
  • Verwenden Sie die Legendenfunktion, um die Linien und Beschriftungen zur Legende hinzuzufügen, indem Sie den Parameter loc übergeben um die Position der Legende anzugeben.
<code class="python">import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rc

time = np.arange(10)
temp = np.random.random(10)*30
Swdown = np.random.random(10)*100-10
Rn = np.random.random(10)*100-10

fig = plt.figure()
ax = fig.add_subplot(111)

lns1 = ax.plot(time, Swdown, '-', label = 'Swdown')
lns2 = ax.plot(time, Rn, '-', label = 'Rn')
ax2 = ax.twinx()
lns3 = ax2.plot(time, temp, '-r', label = 'temp')

# Add all lines and labels to a single legend
lns = lns1+lns2+lns3
labs = [l.get_label() for l in lns]
ax.legend(lns, labs, loc=0)

ax.grid()
ax.set_xlabel("Time (h)")
ax.set_ylabel(r"Radiation ($MJ\,m^{-2}\,d^{-1}$)")
ax2.set_ylabel(r"Temperature ($^\circ$C)")
ax2.set_ylim(0, 35)
ax.set_ylim(-20,100)
plt.show()</code>

Dieser Code erstellt eine einzelne Legende, die alle Beschriftungen der Primär- und Sekundärachse enthält.

Das obige ist der detaillierte Inhalt vonWie füge ich mit twinx() Beschriftungen zur Legende in Diagrammen mit sekundären Achsen hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn