-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
Description
将系统字体添加到字体库:
import matplotlib
from matplotlib import font_manager
font_files = matplotlib.font_manager.findSystemFonts('/usr/share/fonts/opentype/noto')
for font_file in font_files:
print(font_file)
font_manager.fontManager.addfont(font_file)
显示字体:
> matplotlib.font_manager.get_font_names()
['STIXSizeTwoSym',
'cmmi10',
'cmss10',
'STIXSizeFiveSym',
'STIXSizeFourSym',
'cmb10',
'cmtt10',
'DejaVu Sans Mono',
'DejaVu Serif Display',
'STIXSizeOneSym',
'Noto Sans CJK JP',
'DejaVu Sans',
'STIXGeneral',
'STIXNonUnicode',
'cmex10',
'DejaVu Sans Display',
'cmr10',
'cmsy10',
'DejaVu Serif',
'STIXSizeThreeSym',
'Noto Serif CJK JP']
设置字体:
import matplotlib.pyplot as plt
import seaborn as sns
plt.style.use('seaborn-v0_8')
plt.rcParams['font.family'] = ['Noto Sans CJK JP'] # 需要放在 plt.style.use 后面覆盖默认字体
plt.rcParams['axes.unicode_minus'] = False
注:这里的
plt.rcParams['font.family']
名称与字体文件的名称不是同一个,需要通过matplotlib.font_manager.get_font_names()
打印出来确认,系统文件中Noto Serif CJK
包含中文简体,但是名称输出只有Noto Serif CJK JP
,因此font.family
设置为Noto Sans CJK JP
,同样可以正确显示中文
测试:
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [4, 5, 6])
plt.xlabel('X 轴')
plt.ylabel('Y 轴')
plt.title('带有中文的标题')
plt.show()