Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengubah Saiz Kotak Rajah Secara Dinamik agar Sesuai dengan Legenda Mengembang dalam Python?

Bagaimana untuk Mengubah Saiz Kotak Rajah Secara Dinamik agar Sesuai dengan Legenda Mengembang dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-10-18 12:52:03220semak imbas

How to Dynamically Resize Figure Box to Fit Expanding Legend in Python?

Menukar Saiz Kotak Rajah untuk Menampung Legenda Mengembang

Apabila mengalihkan legenda di luar paksi dalam Matplotlib, terdapat cabaran yang dihadapi di mana legenda mungkin dipotong oleh kotak angka. Isu ini berlaku apabila legenda berkembang melepasi sempadan kawasan plot. Secara tradisinya, melaraskan paksi untuk menampung legenda yang lebih besar telah menjadi penyelesaian yang disyorkan, tetapi ini mungkin mengakibatkan pengurangan saiz data, menjadikannya lebih sukar untuk ditafsirkan.

Saiz Semula Dinamik Kotak Rajah

Untuk menangani isu ini, penyelesaian yang dicadangkan ialah mengubah saiz kotak angka secara dinamik untuk menampung legenda yang semakin berkembang tanpa mengubah saiz data. Tingkah laku ini diperhatikan dalam R dan LaTeX tetapi tidak kelihatan serta-merta dalam Python.

Kod untuk Mengubah Saiz Rajah Kotak Secara Dinamik

Kod yang dicadangkan untuk mencapai saiz semula dinamik ini adalah seperti berikut:

<code class="python">fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')</code>

Dalam kod ini, lgd mewakili objek legenda. Dengan menyatakan bbox_extra_artists=(lgd,), kami membenarkan savefig melaraskan kotak angka secara dinamik agar sesuai dengan legenda.

Contoh dengan Legenda Kompleks

Berikut ialah contoh dengan legenda kompleks:

<code class="python">import matplotlib.pyplot as plt
import numpy as np

# Create figure and subplot
fig = plt.figure(1)
ax = fig.add_subplot(111)

# Plot data and create legend
ax.plot(x, np.sin(x), label='Sine')
ax.plot(x, np.cos(x), label='Cosine')
ax.plot(x, np.arctan(x), label='Inverse tan')
lgd = ax.legend(loc='upper center', bbox_to_anchor=(0.5,-0.1))

# Add arbitrary text for testing
text = ax.text(-0.2,1.05, "Aribitrary text", transform=ax.transAxes)

# Set title and grid
ax.set_title("Trigonometry")
ax.grid('on')

# Save figure with dynamic resizing
fig.savefig('samplefigure', bbox_extra_artists=(lgd,text), bbox_inches='tight')</code>

Kod ini menjana plot dengan legenda kompleks yang melangkaui kawasan paksi. Parameter bbox_extra_artists melaraskan kotak angka untuk menampung legenda, menyebabkan keseluruhan legenda dipaparkan.

Nota:

Sejak 2019, kod untuk pensaiz semula dinamik telah menjadi dipermudahkan. Perintah berikut kini sudah memadai:

<code class="python">plt.savefig('x.png', bbox_inches='tight')</code>

Atas ialah kandungan terperinci Bagaimana untuk Mengubah Saiz Kotak Rajah Secara Dinamik agar Sesuai dengan Legenda Mengembang dalam Python?. 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