グラフに大きな18ptフォントのタイトルを付け、その下に小さい10ptフォントのサブタイトルを付けたいと思います。matplotlibでこれを行うにはどうすればよいですか?この関数は、単一の属性title()
を持つ単一の文字列のみを受け取るようです。fontsize
これを行う方法が必要ですが、どうすればよいですか?
7 に答える
私がやっていることはtitle()
、字幕とsuptitle()
メインタイトルに関数を使用することです(それらは異なるフォントサイズの引数を取ることができます)。お役に立てば幸いです。
これでは複数のフォントサイズに関連する柔軟性は得られませんが、pyplot.title()文字列に改行文字を追加するのは簡単な解決策です。
plt.title('Really Important Plot\nThis is why it is important')
これは、Floris van Vugtの回答(2010年12月20日)を実装するパンダのコード例です。彼は言った:
>私がやっていることは、字幕にtitle()関数を使用し、メインタイトルにsuptitle()を使用することです(異なるfontsize引数を取ることができます)。お役に立てば幸いです。
import pandas as pd
import matplotlib.pyplot as plt
d = {'series a' : pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
'series b' : pd.Series([1., 2., 3., 4.], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
title_string = "This is the title"
subtitle_string = "This is the subtitle"
plt.figure()
df.plot(kind='bar')
plt.suptitle(title_string, y=1.05, fontsize=18)
plt.title(subtitle_string, fontsize=10)
注:私はstackoverflowを初めて使用するため、その回答についてコメントすることはできませんでした。
何も組み込まれていないと思いますが、軸の上にもっとスペースを残してfigtext
:を使用することでそれを行うことができます。
axes([.1,.1,.8,.7])
figtext(.5,.9,'Foo Bar', fontsize=18, ha='center')
figtext(.5,.85,'Lorem ipsum dolor sit amet, consectetur adipiscing elit',fontsize=10,ha='center')
ha
の略ですhorizontalalignment
。
私のために働いた解決策は次のとおりです。
suptitle()
実際のタイトルに使用- 字幕に使用
title()
し、オプションのパラメータを使用して調整しますy
。
import matplotlib.pyplot as plt
"""
some code here
"""
plt.title('My subtitle',fontsize=16)
plt.suptitle('My title',fontsize=24, y=1)
plt.show()
2つのテキストの間に厄介な重複がある可能性があります。正しくなるまでの値をいじることで、これを修正できますy
。
TeXを使用するだけです!これは動作します:
title(r"""\Huge{Big title !} \newline \tiny{Small subtitle !}""")
編集:TeX処理を有効にするには、「usetex=True」行をmatplotlibパラメーターに追加する必要があります。
fig_size = [12.,7.5]
params = {'axes.labelsize': 8,
'text.fontsize': 6,
'legend.fontsize': 7,
'xtick.labelsize': 6,
'ytick.labelsize': 6,
'text.usetex': True, # <-- There
'figure.figsize': fig_size,
}
rcParams.update(params)
コンピューター上で動作するTeXディストリビューションも必要だと思います。すべての詳細はこのページに記載されています:
ここで述べたように、uoumatplotlib.pyplot.text
は同じ結果を達成するためにオブジェクトを使用できます。
plt.text(x=0.5, y=0.94, s="My title 1", fontsize=18, ha="center", transform=fig.transFigure)
plt.text(x=0.5, y=0.88, s= "My title 2 in different size", fontsize=12, ha="center", transform=fig.transFigure)
plt.subplots_adjust(top=0.8, wspace=0.3)