关于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()
结果
结果解释
- 全局字体设置为
宋体
,所以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,这部分还未研究,日后补充。需要的可参考文后链接以及网上搜索。
参考链接
欢迎指正!