在matplotlib中为图添加副标题

eulz3vhy  于 2022-12-27  发布在  其他
关注(0)|答案(8)|浏览(313)

我想给予我的图表一个大的18pt字体的标题,然后在它下面用小的10pt字体的副标题。我怎么在matplotlib中做到这一点?看起来title()函数只接受一个带有fontsize属性的字符串。必须有一种方法来做到这一点,但是怎么做呢?

ryhaxcpt

ryhaxcpt1#

我所做的是对副标题使用title()函数,对主标题使用suptitle()函数(它们可以使用不同的字体大小参数)。

polhcujo

polhcujo2#

虽然这不能给你提供多种字体大小的灵活性,但是给pyplot.title()字符串添加一个换行符是一个简单的解决方案;

plt.title('Really Important Plot\nThis is why it is important')
r6l8ljro

r6l8ljro3#

这是一个实现Floris货车Vugt答案的Pandas代码示例(2010年12月20日)。

  • 〉我所做的是使用title()函数作为副标题,使用suptitle()函数作为主标题(它们可以使用不同的字体大小参数),希望能有所帮助!*
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的新手。

ijnw1ujt

ijnw1ujt4#

我不认为有任何内置的东西,但你可以通过在你的轴上留下更多的空间和使用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')

hahorizontalalignment的缩写。

0kjbasz6

0kjbasz65#

对我有效的解决方案是:

  • 使用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的值来解决这个问题,直到您得到正确的值为止。

h22fl7wq

h22fl7wq6#

只要使用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发行版。所有细节都在本页给出:
http://matplotlib.org/users/usetex.html

fkaflof6

fkaflof67#

正如前面提到的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)
0lvr5msh

0lvr5msh8#

在matplotlib中,使用以下函数设置副标题

fig, ax = plt.subplots(2,1, figsize=(5,5))
ax[0, 0].plot(x,y)
ax[0, 0].set_title('text')

相关问题