Matplotlib'de şekil başlığını ve eksen etiketlerinin yazı tipi boyutunu nasıl ayarlayabilirim?

Matplotlib'de şu şekilde bir şekil oluşturuyorum:

from matplotlib import pyplot as plt

fig = plt.figure()
plt.plot(data)
fig.suptitle('test title')
plt.xlabel('xlabel')
plt.ylabel('ylabel')
fig.savefig('test.jpg')

Şekil başlığı ve eksen etiketleri için yazı tipi boyutlarını belirtmek istiyorum. Üçünün de farklı yazı tipi boyutlarında olması gerekiyor, bu nedenle global bir yazı tipi boyutu ayarlamak (mpl.rcParams['font.size']=x) istediğim şey değil. Şekil başlığı ve eksen etiketleri için yazı tipi boyutlarını ayrı ayrı nasıl ayarlayabilirim?

Çözüm

Etiket,başlık, vb. gibi metinle ilgilenen işlevler [matplotlib.text.Text][1] ile aynı parametreleri kabul eder. Yazı tipi boyutu içinsize/fontsize` kullanabilirsiniz:

from matplotlib import pyplot as plt    

fig = plt.figure()
plt.plot(data)
fig.suptitle('test title', fontsize=20)
plt.xlabel('xlabel', fontsize=18)
plt.ylabel('ylabel', fontsize=16)
fig.savefig('test.jpg')

Global olarak title ve label boyutlarını ayarlamak için, mpl.rcParams axes.titlesize ve axes.labelsize içerir. (Sayfadan):

axes.titlesize      : large   # fontsize of the axes title
axes.labelsize      : medium  # fontsize of the x any y labels

(Görebildiğim kadarıyla, x ve y etiket boyutlarını ayrı ayrı ayarlamanın bir yolu yok).

Ve axes.titlesizeın suptitleı etkilemediğini görüyorum. Sanırım bunu manuel olarak ayarlamanız gerekiyor.

Yorumlar (9)

Bunu bir rcParams sözlüğü aracılığıyla global olarak da yapabilirsiniz:

import matplotlib.pylab as pylab
params = {'legend.fontsize': 'x-large',
          'figure.figsize': (15, 5),
         'axes.labelsize': 'x-large',
         'axes.titlesize':'x-large',
         'xtick.labelsize':'x-large',
         'ytick.labelsize':'x-large'}
pylab.rcParams.update(params)
Yorumlar (5)

Eğer çizim yapmak için ax nesnelerini kullanmaya daha alışkınsanız, ax.xaxis.label.set_size()ı hatırlaması daha kolay ya da en azından ipython terminalinde tab kullanarak bulması daha kolay bulabilirsiniz. Etkisini görmek için yeniden çizim işlemine ihtiyaç var gibi görünüyor. Örneğin:

import matplotlib.pyplot as plt

# set up a plot with dummy data
fig, ax = plt.subplots()
x = [0, 1, 2]
y = [0, 3, 9]
ax.plot(x,y)

# title and labels, setting initial sizes
fig.suptitle('test title', fontsize=12)
ax.set_xlabel('xlabel', fontsize=10)
ax.set_ylabel('ylabel', fontsize='medium')   # relative to plt.rcParams['font.size']

# setting label sizes after creation
ax.xaxis.label.set_size(20)
plt.draw()

Oluşturulduktan sonra üst başlık boyutunu ayarlamak için benzer bir yol bilmiyorum.

Yorumlar (4)