我想给予我的图表一个大的18pt字体标题,然后在它下面一个小的10pt字体副标题。如何在matplotlib中执行此操作?看起来title()函数只接受一个具有单个fontsize属性的字符串。一定有办法做到这一点,但怎么做呢?
title()
fontsize
6tdlim6h1#
我所做的是使用title()函数作为副标题,使用suptitle()函数作为主标题(它们可以采用不同的字体大小参数)。
suptitle()
2sbarzqh2#
尽管这并不能给您提供多种字体大小的灵活性,但在pyplot.title()字符串中添加换行符是一个简单的解决方案;
plt.title('Really Important Plot\nThis is why it is important')
mbskvtky3#
这是一个pandas代码示例,实现了货车Vugt的答案(2010年12月20日)。他说:
我所做的是使用title()函数来处理字幕,使用suptitle()函数来处理>main标题(它们可以采用不同的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的新手。
ktca8awb4#
我不认为有任何内置的东西,但你可以通过在轴上方留出更多空间并使用figtext来做到这一点:
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的缩写。
ha
horizontalalignment
h5qlskok5#
对我有效的解决方案是:
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的值来解决这个问题,直到你得到正确的结果。
ha5z0ras6#
使用TeX!这是可行的:
title(r"""\Huge{Big title !} \newline \tiny{Small subtitle !}""")
编辑:要启用TeX处理,需要在matplotlib参数中添加“usetex = True”行:
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发行版在你的电脑上。所有详情请参见本页:http://matplotlib.org/users/usetex.html
eqqqjvef7#
正如前面提到的here,uou可以使用matplotlib.pyplot.text对象来达到相同的结果:
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)
ckocjqey8#
在matplotlib中使用下面的函数来设置字幕
fig, ax = plt.subplots(2,1, figsize=(5,5)) ax[0, 0].plot(x,y) ax[0, 0].set_title('text')
8条答案
按热度按时间6tdlim6h1#
我所做的是使用
title()
函数作为副标题,使用suptitle()
函数作为主标题(它们可以采用不同的字体大小参数)。2sbarzqh2#
尽管这并不能给您提供多种字体大小的灵活性,但在pyplot.title()字符串中添加换行符是一个简单的解决方案;
mbskvtky3#
这是一个pandas代码示例,实现了货车Vugt的答案(2010年12月20日)。他说:
注意:我不能评论这个答案,因为我是stackoverflow的新手。
ktca8awb4#
我不认为有任何内置的东西,但你可以通过在轴上方留出更多空间并使用
figtext
来做到这一点:ha
是horizontalalignment
的缩写。h5qlskok5#
对我有效的解决方案是:
suptitle()
作为实际标题title()
作为字幕,并使用可选参数y
进行调整:这两段文字之间可能会有一些令人讨厌的重叠。你可以通过修改
y
的值来解决这个问题,直到你得到正确的结果。ha5z0ras6#
使用TeX!这是可行的:
编辑:要启用TeX处理,需要在matplotlib参数中添加“usetex = True”行:
我想你还需要一个工作TeX发行版在你的电脑上。所有详情请参见本页:
http://matplotlib.org/users/usetex.html
eqqqjvef7#
正如前面提到的here,uou可以使用
matplotlib.pyplot.text
对象来达到相同的结果:ckocjqey8#
在matplotlib中使用下面的函数来设置字幕