SORU
11 NİSAN 2012, ÇARŞAMBA


Eksen dışına taşıma matplotlib efsaneye göre şekil kutusu ile kesme yapar

Aşağıdaki soruları biliyorum:

Matplotlib savefig with a legend outside the plot

How to put the legend out of the plot

Bu soruların cevapları efsane sığması ile eksen tam küçülen keman için güçlü olmak lüksüne sahip gibi görünüyor.

Küçülen baltalar, ancak, değil ideal bir çözüm çünkü bunu yapar, verileri daha küçük hale aslında daha zor yorumlamak; özellikle zaman karmaşık ve çok şeyler oluyor ... bu yüzden gerek büyük bir efsane

Belgelerinde karmaşık bir efsane örnek komplolarına efsane aslında tamamen çoklu veri noktaları gizler, çünkü bu ihtiyaç gösterir.

http://matplotlib.sourceforge.net/users/legend_guide.html#legend-of-complex-plots

Yapmak istediğim dinamik olarak şekil kutusunun boyutunu genişletmek genişleyen şekil efsane karşılamak için.

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-2*np.pi, 2*np.pi, 0.1)
fig = plt.figure(1)
ax = fig.add_subplot(111)
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=9, bbox_to_anchor=(0.5,0))
ax.grid('on')

Nasıl son etiket 'Ters tan' aslında şekil kutusu (ve kötü kesme - yayın yok görünüyor kalite!)dışında olduğunu fark enter image description here

Son olarak, bu biraz kafam karıştı R ve Lateks normal bir davranış olduğu söylendi neden bu kadar zor python... ... tarihi için bir sebep mi? Matlab de aynı derecede kötü bu konuda?

Pastebin üzerinde bu kod http://pastebin.com/grVjc007 (sadece biraz) daha uzun versiyonu var

CEVAP
14 NİSAN 2012, CUMARTESİ


Üzgünüm EMS, ama aslında sadece matplotlib mailling listeden başka bir tepki var (Teşekkürler Benjamin Kök söner).

Aradığım kod savefig için arama ayarlama

fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')
#Note that the bbox_extra_artists must be an iterable

Bu görünüşte tight_layout, ama savefig hesaplamada fazladan sanatçı olarak izin yerine çağırmak için benzer. Bu aslında istediğiniz gibi şekil kutusunu yeniden boyutlandırmak yaptı.

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(-2*np.pi, 2*np.pi, 0.1)
fig = plt.figure(1)
ax = fig.add_subplot(111)
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')
handles, labels = ax.get_legend_handles_labels()
lgd = ax.legend(handles, labels, loc='upper center', bbox_to_anchor=(0.5,-0.1))
ax.grid('on')
fig.savefig('samplefigure', bbox_extra_artists=(lgd,), bbox_inches='tight')

Bu üretir:

enter image description here

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MisterBrightside

    MisterBright

    24 Mart 2006
  • SelmerSaxMan

    SelmerSaxMan

    24 HAZİRAN 2006
  • Theodore Leaf

    Theodore Lea

    29 AĞUSTOS 2006