web-dev-qa-db-ja.com

matplotlib.pyplotを使って凡例のサイズを変更する方法

ここでの簡単な質問:私はmatplotlib.pyplotを使って私の凡例のサイズを小さくしようとしています(すなわち、テキストはもっと小さくなります)。私が使っているコードはこんな感じです。

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)
250
mike

propキーワードを調整して、凡例の個々のフォントサイズを設定できます。

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

これはmatplotlib.font_manager.FontPropertiesプロパティに対応するキーワードの辞書を取ります。凡例については のドキュメントを参照してください

キーワード引数:

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 では、キーワードfontsizeを使用することもできます。

442
Yann

これはすべきです

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

その後でプロットを行います。

他にもたくさんのrcParamsがありますが、それらはmatplotlibrcファイルで設定することもできます。

またおそらくmatplotlib.font_manager.FontPropertiesインスタンスを渡してそれを変更することができますが、これはどうすればよいかわかりません。 - > Yannの答えを見てください。

49
Mauro

ポイントのサイズとは別に、いくつかの名前付き フォントサイズ もあります。

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

使用法:

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

import matplotlib.pyplot as pltを使う

方法1:凡例を呼び出すときのフォントサイズを指定する(繰り返し)

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

この方法では、作成時に各凡例のフォントサイズを設定できます(異なるフォントサイズで複数の凡例を表示できます)。ただし、凡例を作成するたびにすべてを手動で入力する必要があります。

(注:@ Mathias711は彼の答えに利用可能な名前付きfontsizesをリストしました)

方法2:rcParamsでフォントサイズを指定する(便利)

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

この方法ではデフォルトの凡例のfontsizeを設定します。方法1を使用して指定しない限り、すべての凡例が自動的にそれを使用します。 。

名前付きサイズを使用する場合'medium'の場合、凡例のテキストはrcParamsのグローバルfont.sizeに合わせて拡大縮小されます。 font.sizeを変更するにはplt.rc(font.size='medium')を使います

34
byntje

凡例のサイズを調整するための設定は複数あります。私が最も役立つと思う2つは、次のとおりです。

  • labelspacing:ラベルエントリ間の間隔をフォントサイズの倍数で設定します。例えば10ポイントフォントの場合、legend(..., labelspacing=0.2)はエントリ間の間隔を2ポイントに減らします。私のインストールのデフォルトは約0.5です。
  • prop:フォントサイズなどを完全に制御できます。legend(..., prop={'size':8})を使用して8ポイントフォントを設定できます。私のインストールのデフォルトは約14ポイントです。

さらに、 の凡例ドキュメント には、borderpadhandlelengthhandletextpadborderaxespad、およびcolumnspacingを含む、その他のいくつかのパディングおよびスペースパラメーターがリストされています。これらはすべて、複数のフォントサイズにおいても、ラベルスペースおよび面積と同じ形式に従います。

これらの値は、 matplotlibrcファイル を使用してすべての図のデフォルトとして設定することもできます。

15
Bryan P

私のインストールでは、FontPropertiesはテキストサイズを変更するだけですが、それでもまだ大きすぎて間隔が空いています。 pyplot.rcParamslegend.labelspacingにパラメータが見つかりました。これはフォントサイズの数分の1に設定されていると思います。私はそれを変えました

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

Pyplot.legend関数への指定方法がわからない

prop={'labelspacing':0.25}

または

prop={'legend.labelspacing':0.25}

エラーで戻ってきます。

5
swint144