Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menambah Label pada Legenda dalam Plot dengan Kapak Sekunder Menggunakan twinx()?

Bagaimana untuk Menambah Label pada Legenda dalam Plot dengan Kapak Sekunder Menggunakan twinx()?

Patricia Arquette
Patricia Arquetteasal
2024-10-31 04:32:30889semak imbas

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

Menambah Label pada Legenda dalam Plot dengan Kapak Sekunder Menggunakan twinx()

Memiliki berbilang paksi dalam satu plot boleh berguna untuk menggambarkan data daripada sumber yang berbeza atau dengan unit yang berbeza. Apabila menggunakan fungsi twinx() untuk mencipta paksi sekunder, anda mungkin perlu menambah label pada garisan yang diplot pada paksi sekunder dan memasukkannya ke dalam legenda.

Untuk mencapai ini, anda boleh sama ada menambah legenda berasingan untuk paksi sekunder menggunakan ax2.legend(loc=0). Walau bagaimanapun, pendekatan ini menghasilkan dua legenda yang berasingan.

Untuk paparan yang lebih padu, semua label boleh ditambahkan pada satu legenda menggunakan langkah berikut:

  • Buat senarai baris objek yang mewakili semua garis yang diplot pada kedua-dua paksi.
  • Buat senarai label yang sepadan dengan objek baris.
  • Gunakan fungsi legenda untuk menambah garisan dan label pada legenda, menghantar parameter loc untuk menentukan lokasi legenda.
<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>

Kod ini akan menghasilkan satu legenda yang merangkumi semua label daripada paksi primer dan sekunder.

Atas ialah kandungan terperinci Bagaimana untuk Menambah Label pada Legenda dalam Plot dengan Kapak Sekunder Menggunakan twinx()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn