2011-08-19 21 views
190

Basit soru burada: matplotlib.pyplot kullanarak efsanem boyutunu küçültmeye çalışıyorum (yani metnin daha küçük olması). Ben kullanıyorum kod şöyle gider:Matplotlib.pyplot ile gösterge boyutunun nasıl değiştirileceği

plot.figure() 
plot.scatter(k, sum_cf, color='black', label='Sum of Cause Fractions') 
plot.scatter(k, data[:, 0], color='b', label='Dis 1: cf = .6, var = .2') 
plot.scatter(k, data[:, 1], color='r', label='Dis 2: cf = .2, var = .1') 
plot.scatter(k, data[:, 2], color='g', label='Dis 3: cf = .1, var = .01') 
plot.legend(loc=2) 

cevap

338

prop anahtar sözcüğünü ayarlayarak, lejand için ayrı bir yazı tipi boyutu belirleyebilirsiniz.

plot.legend(loc=2, prop={'size': 6}) 

Bu matplotlib.font_manager.FontProperties özelliklerine karşılık gelen anahtar kelimelerin bir sözlük alır.

Kelime argümanlar: documentation for legend Bkz

prop: [ None | FontProperties | dict ] 
    A matplotlib.font_manager.FontProperties instance. If prop is a 
    dictionary, a new instance will be created with prop. If None, use 
    rc settings. 

Bu sürümü 1.2.1 itibariyle de mümkündür, anahtar kelime fontsize kullanmak.

+1

olduğunu söyleyebilirim? Plot.rcParams.update' hakkında detayı nerede bulabilirim? – haccks

39

Bu Ondan sonra arsa do

import pylab as plot 
params = {'legend.fontsize': 20, 
      'legend.handlelength': 2} 
plot.rcParams.update(params) 

yapmalıdır.

Bir ton başka rcParams vardır, bunlar matplotlibrc dosyasında da ayarlanabilirler.

Ayrıca, muhtemelen bir matplotlib.font_manager.FontProperties örneğini geçirerek de değiştirebilirsiniz, ancak bunu nasıl yapacağımı bilmiyorum. -> Yann'ın cevabına bakınız.

+1

ya 'matplotlib.rc ('Legend', fontsize = 0.5, çizgi genişliği = 2)' '' yerine – Eric

+1

() arasında değiştirmek için FontManager varsayılan boyutu döndürür. Benim için bu 12 –

+0

elemanı get_default_size legend.linewidth' arasında legend.handlelength' olmalıdır –

4

Yüklememde, FontProperties yalnızca metin boyutunu değiştirir, ancak hala çok büyük ve aralıklı. pyplot.rcParams: legend.labelspacing'da bir parametre buldum, tahmin ettiğim yazı tipi boyutunun bir kısmı.

prop={'labelspacing':0.25} 

veya

prop={'legend.labelspacing':0.25} 

geçen bir hata ile geri geliyor - Ben pyplot.legend işlevine nasıl belirleneceğini emin değilim

pyplot.rcParams.update({'legend.labelspacing':0.25}) 

ile değiştirdik .

+6

Sadece bana "legend (labelpacing = 0.25)" vererek çalıştım. – Adobe

12

Açıklama boyutunun ayarlanması için birden fazla ayar vardır. En kullanışlı bulduklarım:

  • labelpacing: etiket girişleri arasındaki boşluğu, yazı tipi boyutunun katları olarak ayarlar. Örneğin, 10 puntolu bir yazı tipiyle, legend(..., labelspacing=0.2), girişler arasındaki aralığı 2 noktaya indirecektir. Yüklememdeki varsayılan yaklaşık 0,5'tir.
  • prop: yazı tipi boyutunun tam denetimini sağlar. legend(..., prop={'size':8}) kullanarak 8 puntolu bir yazı tipi ayarlayabilirsiniz. Benim kurulumumdaki varsayılan yaklaşık 14 puan. Buna ek olarak

, legend documentation listeleri de dahil olmak üzere, diğer dolgu ve aralık bir dizi parametre: borderpad, handlelength, handletextpad, borderaxespad ve columnspacing. Bunların hepsi, etiketleme ve alan ile aynı biçimini aynı zamanda font boyutunun katları halinde de takip eder.

Bu değerler, matplotlibrc file kullanılarak tüm değerler için varsayılan değerler olarak da ayarlanabilir.

26

da noktalarında boyutu haricinde fontsizes adında birkaç vardır:

xx-small 
x-small 
small 
medium 
large 
x-large 
xx-large 

Kullanımı: çağrılırken fontsize belirtin:

pyplot.legend(loc=2, fontsize = 'x-small') 
16

import matplotlib.pyplot as plt

Yöntem 1 kullanılarak gösterge (tekrarlayan)

plt.legend(fontsize=20) # using a size in points 
plt.legend(fontsize="x-large") # using a named size 

Bu yöntemle, oluşturma sırasında her efsanenin font boyutunu ayarlayabilirsiniz (farklı font boyutlarına sahip birden çok efsaneye sahip olmanıza izin verir). Ancak, her efsane oluşturduğunuzda her şeyi elle yazmanız gerekecektir.

(Not: Mathias711 onun cevabını mevcut adında fontsizes listelenen @)

Yöntem 2: varsayılan efsane set Bu yöntemle

plt.rc('legend',fontsize=20) # using a size in points 
plt.rc('legend',fontsize='medium') # using a named size 

(elverişli) rcParams içinde fontsize belirtmek fontsize ve tüm lejandlar, 1. yöntemi kullanarak başka bir yöntem belirtmedikçe otomatik olarak bunu kullanır. Bu, efsanenizi fontunuzun başlangıcını kodunuzun başlangıcında ayarlayabileceğiniz anlamına gelir ve her bir efsane için ayarlama konusunda endişelenmenize gerek yoktur.

Adlandırılmış bir boyut kullanırsanız, ör. 'medium', sonra gösterge metni, rcParams numaralı global font.size ile ölçeklenecektir. Kullanım font.sizeplt.rc(font.size='medium')

İlgili konular