web-dev-qa-db-ja.com

MatplotlibでFigureのタイトルとAxesラベルのフォントサイズを設定するにはどうすればいいですか?

私はMatplotlibでこのような図を作成しています:

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')

Figureのタイトルと軸ラベルのフォントサイズを指定したいです。 3つすべてを異なるフォントサイズにする必要があるので、グローバルフォントサイズ(mpl.rcParams['font.size']=x)を設定することは私が望むことではありません。 Figureのタイトルと軸ラベルのフォントサイズを個別に設定するにはどうすればよいですか?

385
vasek1

labeltitleなどのテキストを扱う関数は、 matplotlib.text.Text と同じパラメータを受け取ります。フォントサイズにはsize/fontsizeを使用できます。

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')

titleおよびlabelのサイズをグローバルに設定する場合、 mpl.rcParams にはaxes.titlesizeおよびaxes.labelsizeが含まれます。 (ページから):

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

(私の知る限りでは、xyのラベルサイズを別々に設定する方法はありません。)

そしてaxes.titlesizesuptitleに影響しないことがわかります。手動で設定する必要があると思います。

566
Avaris

RcParams辞書を使ってこれをグローバルに行うこともできます。

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)
62
tsando

作図にaxオブジェクトを使用することに慣れている場合は、ax.xaxis.label.set_size()の方が覚えやすい、または少なくともipython端末のタブを使用して見つける方が簡単な場合があります。効果を確認するには、あとで再描画操作が必要になるようです。例えば:

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()

それが作成された後、私はsuptitleサイズを設定するための同様の方法を知りません。

28
spinup

タイトルのフォントを変更するだけで(軸のフォントは変更しません)、これを使用しました。

import matplotlib.pyplot as plt
fig = plt.Figure()
ax = fig.add_subplot(111)
ax.set_title('My Title', fontdict={'fontsize': 8, 'fontweight': 'medium'})

matplotlib.text.Text からのすべてのkwargs以外のフォント辞書。

3
tammoj

フォントサイズを変更する別の解決策は、パディングを変更することです。 PythonがPNGを保存したら、開いたダイアログボックスを使ってレイアウトを変更できます。軸間の間隔、あなたが好きならパディングはこの段階で変更することができます。

0
Naz