Matplotlib 注释改变字体

Matplotlib annotate change font

我正在尝试更改与 matplotlib 的注释功能一起出现的文本的字体类型(从 deja-vu 到让我们说 comic sans 或 calibri)。但是,尽管我可以更改图中所有其他元素的字体,但它不会更改注释文本的字体。有什么帮助吗?以下是我正在使用的内容以及我如何全局设置字体。比较图中“1”的样式时,您会注意到字体的差异。

import numpy as np
import os, glob
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.font_manager
from matplotlib import rcParams

import pdb
matplotlib.font_manager._rebuild()
# THIS SETS ALL THE RELEVANT FONT STYLE FOR PLOTS
rcParams['font.family'] = 'sans-serif'
rcParams['font.weight'] = 'regular'  #can omit this, it's the default
rcParams['font.sans-serif'] = ['calibri']

# test code
ax = plt.figure().add_subplot()
x,y = np.arange(10),np.arange(10)
ax.plot(x,y)
ax.annotate(r'0^\circ$',
            xy=(1.1, 0.1), xycoords='axes fraction',
            xytext=(1.1, 0.8), textcoords='axes fraction',
            arrowprops=dict(facecolor='black', shrink=0.01),
            horizontalalignment='center', verticalalignment='top',
            fontsize=15)

问题是,它是数学文本...如果您更改 常规 文本的字体特征,您不会影响 Matplotlib 用于数学文本的字体。

当然你可以修改数学文本中使用的字体(Matplotlib中有什么你不能修改的吗?)

Writing mathematical expressions

[...] Mathtext can use DejaVu Sans (default), DejaVu Serif, the Computer Modern fonts (from (La)TeX), STIX fonts (with are designed to blend well with Times), or a Unicode font that you provide. The mathtext font can be selected with the customization variable mathtext.fontset (see Customizing Matplotlib with style sheets and rcParams).