SORU
15 Ocak 2011, CUMARTESİ


Nasıl komplo dışında efsane koymak

20 araziler (subplots değil) bir dizi tek bir şekilde yapılması gerekiyor. Efsane kutunun dışında olmak istiyorum. Aynı zamanda, figürün boyutu azaltılmış olur gibi eksen değiştirmek istemiyorum. Lütfen aşağıdaki sorguları için bana yardım et:

  1. Çizim alanının dışında efsane kutu tutmak istiyorum. (Efsane dışında çizim alanının sağ tarafında olmak istiyorum).
  2. Efsane kutusunun boyutu küçük olacak, böylece metnin yazı tipi boyutu azaltın en azından efsane kutusunun içinde.

CEVAP
15 Ocak 2011, CUMARTESİ


Ne istediğinizi yapmak için bir kaç yolu vardır. @İnalis ve @Navi kelime eklemek, bbox_to_anchor legend kısmen eksenleri ve/dışarıda yer ya da yazı tipi boyutunu azaltmak için anahtar kelime değişkenini kullanabilirsiniz.

Yazı tipi boyutunu şeyler çok zor okuma yapabilirsiniz) azalan düşünmeden önce, etrafında farklı yerlerde efsane yerleştirme ile oynamayı deneyin:

Bakalım genel bir örnek ile başlayalım:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)

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

for i in xrange(5):
    ax.plot(x, i * x, label='$y = %ix$' % i)

ax.legend()

plt.show()

alt text

Aynı şeyi yaparız, ama bbox_to_anchor anahtar değişkeni kullanırsanız, biraz eksen sınırları dışında efsane vardiya:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)

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

for i in xrange(5):
    ax.plot(x, i * x, label='$y = %ix$' % i)

ax.legend(bbox_to_anchor=(1.1, 1.05))

plt.show()

alt text

Benzer şekilde, bir efsane daha yatay ve/veya rakam üst (yuvarlak köşeler ve basit bir gölge açıyorum) koyabilirsiniz:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)

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

for i in xrange(5):
    line, = ax.plot(x, i * x, label='$y = %ix$'%i)

ax.legend(loc='upper center', bbox_to_anchor=(0.5, 1.05),
          ncol=3, fancybox=True, shadow=True)
plt.show()

alt text

Alternatif olarak, mevcut arsa genişliğini küçültmek ve tamamen şekil ekseni dışında: efsane koyabilirsiniz

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)

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

for i in xrange(5):
    ax.plot(x, i * x, label='$y = %ix$'%i)

# Shrink current axis by 20%
box = ax.get_position()
ax.set_position([box.x0, box.y0, box.width * 0.8, box.height])

# Put a legend to the right of the current axis
ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))

plt.show()

alt text

Ve benzer şekilde, arsa dikey olarak küçültme ve alt kısmında yatay bir efsane koyabilirsiniz:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(10)

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

for i in xrange(5):
    line, = ax.plot(x, i * x, label='$y = %ix$'%i)

# Shrink current axis's height by 10% on the bottom
box = ax.get_position()
ax.set_position([box.x0, box.y0   box.height * 0.1,
                 box.width, box.height * 0.9])

# Put a legend below current axis
ax.legend(loc='upper center', bbox_to_anchor=(0.5, -0.05),
          fancybox=True, shadow=True, ncol=5)

plt.show()

alt text

matplotlib legend guide bakabilirsiniz. Ayrıca plt.figlegend() bakmak isteyebilirsiniz. Bu biraz yardımcı olur umarım, her neyse!

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Canal TekZoom

    Canal TekZoo

    1 NİSAN 2012
  • SVB International

    SVB Internat

    29 EKİM 2011
  • xCraash

    xCraash

    6 Temmuz 2012