Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Mengubah Saiz Kotak Rajah Secara Dinamik agar Sesuai dengan Legenda Mengembang dalam 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!