Matplotlib.pyplot ile gösterge boyutu nasıl değiştirilir


324

Burada basit bir soru: Efsanemin boyutunu matplotlib.pyplotdaha küçük (yani, daha küçük metin) kullanarak elde etmeye çalışıyorum . Ben kullanıyorum kodu böyle bir şey gider:

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)

Yanıtlar:


543

propAnahtar kelimeyi ayarlayarak açıklama için ayrı bir yazı tipi boyutu belirleyebilirsiniz .

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

Bu, matplotlib.font_manager.FontPropertiesözelliklere karşılık gelen bir anahtar kelimeler sözlüğü alır . Gösterge için belgelere bakın :

Anahtar kelime bağımsız değişkenleri:

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.

1.2.1 sürümünden itibaren anahtar kelimeyi kullanmak da mümkündür fontsize.


1
Bana nerede hakkında ayrıntılı bilgi bulabilirim plot.rcParams.update?
haccks

64

Bu yapmalı

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

Sonra arsa yapın.

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

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


2
Veyamatplotlib.rc('legend', fontsize=0.5, linewidth=2)
Eric

2
bunun legend.handlelengthyerine olmalılegend.linewidth
Emmet B

FontManager öğesinin get_default_size () öğesi varsayılan boyutu döndürür. Benim için 12
guhur

1
"PyLab" kullanımı artık teşvik
edilmiyor

51

kullanma import matplotlib.pyplot as plt

Yöntem 1: Göstergeyi çağırırken yazı tipini belirtin (yinelenen)

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 bir açıklama için yazı tipi boyutunu ayarlayabilirsiniz (farklı yazı tipi boyutlarıyla birden fazla açıklama elde etmenize izin verir). Ancak, her bir efsane oluşturduğunuzda her şeyi manuel olarak yazmanız gerekir.

(Not: @ Mathias711 cevabında mevcut fontsize adlarını listeledi)

Yöntem 2: RCParams'da yazı tipini belirtin (uygun)

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

Bu yöntemle varsayılan gösterge yazı tipini ayarlarsınız ve yöntem 1'i başka bir yöntemle belirtmedikçe tüm göstergeler bunu otomatik olarak kullanır. .

Örneğin adlandırılmış bir boyut kullanırsanız 'medium', açıklama metni genel font.sizeinç ile ölçeklenir rcParams. font.sizeKullanımı değiştirmek içinplt.rc(font.size='medium')


1
Sadece Python yeni başlayanlarını bilgilendirmek için (benim gibi): Yöntem 1 yalnızca bir çizim oluşturduktan sonra çalışır (bir çizim () satırından sonra) ve Yöntem 2 yalnızca bir çizim oluşturmadan önce çalışır. Teşekkür ederim. @Scott Gigante ile hemfikirim, cevap bu olmalı!
Mateus da Silva Teixeira

42

Noktalardaki boyutun yanı sıra, birkaç adlandırılmış yazı tipi de vardır :

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

Kullanımı:

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

19

Gösterge boyutunu ayarlamak için birden fazla ayar vardır. En yararlı bulduğum ikisi:

  • labelspacing: etiket girişleri arasındaki boşluğu yazı tipi boyutunun katları olarak ayarlar. Örneğin, 10 puntoluk bir yazı tipiyle, legend(..., labelspacing=0.2)girişler arasındaki boşluğu 2 noktaya indirir. Yüklememdeki varsayılan değer yaklaşık 0,5'tir.
  • prop: yazı tipi boyutu vb. üzerinde tam denetime izin verir legend(..., prop={'size':8}). düğmesini kullanarak 8 puntoluk bir yazı tipi ayarlayabilirsiniz . Yüklememdeki varsayılan değer yaklaşık 14 puandır.

Buna ek olarak, gösterge belgeler listesi de dahil olmak üzere, diğer dolgu ve aralık bir dizi parametre: borderpad, handlelength, handletextpad, borderaxespad, ve columnspacing. Bunların tümü, etiket boşluğu ve alanla aynı biçimi izleyerek yazı tipi boyutlarının katlarını da takip eder.

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


5

Yüklememde FontProperties yalnızca metin boyutunu değiştirir, ancak yine de çok büyük ve aralıklı. Ben bir parametre buldum pyplot.rcParams:, legend.labelspacinghangi tahmin yazı tipinin bir kısmını ayarlanır tahmin. İle değiştirdim

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

Pyplot.legend işlevine nasıl belirtileceğinden emin değilim -

prop={'labelspacing':0.25}

veya

prop={'legend.labelspacing':0.25}

bir hata ile geri gelir.


0

plot.legend (loc = 'alt sağ', ondalık_dizeler = 2, fontsize = '11', başlık = 'Hey orada', title_fontsize = '20')

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.