我想给我的图表一个大的18pt字体的标题,然后是一个较小的10pt字体下面的字幕。我怎么能在matplotlib中这样做?看起来title()
函数只接受一个带有单个fontsize
属性的字符串。必须有办法做到这一点,但如何?
答案 0 :(得分:60)
我所做的是使用title()函数作为副标题,使用suptitle()作为主标题(它们可以使用不同的fontsize参数)。希望有所帮助!
答案 1 :(得分:20)
虽然这不能提供与多种字体大小相关的灵活性,但在pyplot.title()字符串中添加换行符可以是一个简单的解决方案;
plt.title('Really Important Plot\nThis is why it is important')
答案 2 :(得分:17)
这是一个实施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的新手。
答案 3 :(得分:12)
我不认为内置任何内容,但您可以通过在轴上方留出更多空间并使用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
的缩写。
答案 4 :(得分:7)
只需使用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发行版。所有详细信息均在此页面给出:
答案 5 :(得分:3)
最适合我的解决方案是:
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()
两段文字之间可能会有些讨厌的重叠。您可以通过摆弄y
的值来解决此问题,直到正确为止。
答案 6 :(得分:0)
如here所述,您可以使用matplotlib.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)