Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

附录:中文无法正常显示的问题

制定rc配置文件的字体

pyplot模块使用rc配置文件来自定义图形的各种默认属性,称之为rc配置或rc参数。通过修改rc参数可以修改默认的属性,包括窗体大小、每英寸的点数、线条宽度、颜色、样式、坐标轴、坐标和网络属性、文本、字体等。

由于默认的pyplot字体并不支持中文字符的显示,因此需要通过修改pyplot.rc参数font.sans-serif来修改绘图时的字体。同时,由于修改字体后,会导致坐标轴中负号“-”无法正常显示,因此需要同时修改axes.unicode_minus参数。

plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置字体为SimHei
plt.rcParams['axes.unicode_minus'] = False  # 解决负号“-”显示异常

没有smhei字体,如何解决

运行一下代码,注意:不同电脑以及系统运行出的结果不同,即字体文件和存放位置不同!

import matplotlib
from matplotlib import font_manager
print(matplotlib.__version__)
#font_manager._rebuild()
import pandas as pd
f = {}
print('中文字体\t字体路径')
for font in font_manager.fontManager.ttflist:
    f[font.name] = font.fname
    for j in ['hei', 'song', 'kaiti', 'wei', 'pingfang']:
        if j in font.name.lower(): 
            print("'%s'\t%s" %(font.name, font.fname))
            pass
f = pd.DataFrame(f, index=['']).T
f = f.sort_index()
#print(f)
#f.to_csv('font.csv')
3.10.1
中文字体	字体路径
'Hei'	/System/Library/AssetsV2/com_apple_MobileAsset_Font7/62032b9b64a0e3a9121c50aeb2ed794e3e2c201f.asset/AssetData/Hei.ttf
'LiSong Pro'	/System/Library/AssetsV2/com_apple_MobileAsset_Font7/5a3fc034b64879656271c040cab38b65d4ea6548.asset/AssetData/LiSongPro.ttf
'PingFang HK'	/System/Library/Fonts/PingFang.ttc
'Songti SC'	/System/Library/Fonts/Supplemental/Songti.ttc
'STHeiti'	/System/Library/AssetsV2/com_apple_MobileAsset_Font7/eb257c12d1a51c8c661b89f30eec56cacf9b8987.asset/AssetData/STHEITI.ttf
'Heiti TC'	/System/Library/Fonts/STHeiti Light.ttc
'LiHei Pro'	/System/Library/AssetsV2/com_apple_MobileAsset_Font7/3a9dbc8ddc8b85f43055a28fb5d551e905d43de2.asset/AssetData/LiHeiPro.ttf
'Heiti TC'	/System/Library/Fonts/STHeiti Medium.ttc
'Lantinghei SC'	/System/Library/AssetsV2/com_apple_MobileAsset_Font7/f7f6b250e97c182e68ac53a2b359ec44548878b9.asset/AssetData/Lantinghei.ttc
'Kaiti SC'	/System/Library/AssetsV2/com_apple_MobileAsset_Font7/54a2ad3dac6cac875ad675d7d273dc425010a877.asset/AssetData/Kaiti.ttc
'STHeiti'	/System/Library/AssetsV2/com_apple_MobileAsset_Font7/f0706a236683628e16427c6569e441423faaaa93.asset/AssetData/STXIHEI.ttf
'SimSong'	/System/Library/AssetsV2/com_apple_MobileAsset_Font7/857d6c90171c328a4892c1492291d34e401d7f25.asset/AssetData/SimSong.ttc
'STFangsong'	/System/Library/AssetsV2/com_apple_MobileAsset_Font7/1821952872c81043711aab6910052b65da8edf2c.asset/AssetData/STFANGSO.ttf

选择以上可以显示中文的字体,赋值给plt.rcParams['font.sans-serif']

举例:使用宋体

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'Songti SC'  # 设置字体为Songti SC
plt.rcParams['axes.unicode_minus'] = False  # 解决负号“-”显示异常

import numpy as np
fig, ax = plt.subplots(figsize=(6,3))
X = np.linspace(0, 15, 100)
Y = np.sin(X)
ax.plot(X, Y)
ax.set_title('A Sin Wave')
ax.set_ylabel('Y')
ax.set_xlabel('X')
plt.title('sin曲线')
plt.show()
<Figure size 600x300 with 1 Axes>

举例:使用黑体

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'Heiti TC'  # 设置字体为黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号“-”显示异常

import numpy as np
fig, ax = plt.subplots(figsize=(6,3))
X = np.linspace(0, 15, 100)
Y = np.sin(X)
ax.plot(X, Y)
ax.set_title('A Sin Wave')
ax.set_ylabel('Y')
ax.set_xlabel('X')
plt.title('sin曲线')
plt.show()
<Figure size 600x300 with 1 Axes>