附录:中文无法正常显示的问题
制定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()
举例:使用黑体¶
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()