Matplotlib中显示汉字,Times New Roman字体,公式的相关设置(1)

关于matplotlib中汉字显示的相关方法可以在很多博客文章中查到,此处不再赘述。
写这篇文章的原因是需要在一张图的xlabel处既需要显示汉字,还需要显示Times New Roman的英文,还有公式。
查找了许多文章,找到了一种方法,特在此总结一下。

首先导入包

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import numpy as np

字体设置及解释

plt.rcParams['font.sans-serif'] = ['SimSun'] # 全局字体,显示中文,宋体,可替换为其他字体
plt.rcParams['font.size'] = 14 # 全局字号
plt.rcParams['mathtext.fontset'] = 'stix' # 用tex公式的形式输入英文和公式,以显示Times New Roman字体
fonten = FontProperties(fname='C:\Windows\Fonts\Times.ttf', size=12) # 在其他需要个性化设置字体类型时,使用FontProperties进行设置,此处也可以使用dict,然后在需要时赋值给fontdict

数据

x = np.linspace(1, 10, 10)
y = np.array([85, 108, 148, 227, 329, 517, 572, 786, 903, 972])

绘图

plt.bar(x, y, width=0.2)
plt.xticks(np.linspace(1, 10, 10), fontproperties=fonten)
plt.xlabel(r'x轴    $\mathrm{x \ label}\sum_{i=0}^\infty x_i$')
plt.title(r'title   $title$', fontproperties=fonten)
plt.show()

结果

Matplotlib中显示汉字,Times New Roman字体,公式的相关设置(1)_第1张图片

结果解释

  • 全局字体设置为宋体,所以x label中的x轴显示为宋体
  • 使用\mathrm{{x \ label}}后,x label中的x label显示为TImes New Roman字体
  • 对比title中的$title$,此处显示为斜体,说明tex公式默认斜体,xlabel中的公式也是斜体
  • xtick中的字体通过fontproperties设置为TImes New Roman字体

存在问题

  • 此处使用的tex是matplotlib内置的tex,但功能较弱,如果需要在公式中显示中文,需要使用外部tex,这部分还未研究,日后补充。需要的可参考文后链接以及网上搜索。

参考链接

参考1
参考2

欢迎指正!

你可能感兴趣的:(方法,Python相关,python,matplotlib)