Я не думаю, что легко можно изменить любой математический текст на произвольный шрифт.Однако, в случае "CO_2"
, который состоит только из обычных символов , вы можете использовать \mathdefault{}
, чтобы заставить математический текст использовать символы из обычного шрифта.
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = "serif"
plt.rcParams["font.serif"] = ["Times New Roman"] + plt.rcParams["font.serif"]
fig, ax = plt.subplots()
ax.set_xlabel(r'$\mathdefault{CO_2}$ pressure')
ax.set_ylabel(r'$\mathdefault{CO_2}$ concentration')
plt.show()

Что-то вроде r"$\mathdefault{\sum_\alpha^\beta\frac{i}{9}}$
будет по-прежнему отображаться в обычном математическом наборе шрифтов по умолчанию (за исключением "i"
и 9
, которые, конечно, присутствуют в Times New Roman).

Для общего случая вы также можете изменить полный набор математических шрифтов на любой из доступных, cm
, stix
, stixsans
, dejavuserif
, dejavusans
.Наиболее близким к «Times New Roman» будет stix
.
import matplotlib.pyplot as plt
rc = {"font.family" : "serif",
"mathtext.fontset" : "stix"}
plt.rcParams.update(rc)
plt.rcParams["font.serif"] = ["Times New Roman"] + plt.rcParams["font.serif"]
fig, ax = plt.subplots()
ax.set_xlabel(r'$CO_2$ pressure')
ax.set_ylabel(r'$CO_2$ concentration')
plt.show()

Общая рекомендация по чтению будет MathTextучебник .