背景
今日我的Python心路历程是 股票实战可视化之编译错误UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 3: ordinal not in range(128)
)
分析
plt图中显示中文是常见用法,但似乎调试起来没那么容易呢。见初始代码:
#展示效果设置
plt.figure('SNS图例', figsize=(18, 5))
编译错误UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 3: ordinal not in range(128)
调试编译时截图如下:
方案
首先,增加字体配置后的代码如下:
#字体配置
from pylab import *
from matplotlib.font_manager import FontProperties
#定义字体属性
font = FontProperties(fname=r"/System/Library/AssetsV2/com_apple_MobileAsset_Font6/4c66b413a81d594dc2fc430266c1629c30a5237b.asset/AssetData/STFANGSO.ttf", size=14) # “”里面为字体的相对地址 或者绝对地址
......
#测试中文
def testChinese():
plt.figure()
plt.xlabel(u"横坐标名称", fontproperties=font)
plt.ylabel(u"纵坐标名称", fontproperties=font)
plt.title(u"题目", fontproperties=font)
plt.plot([1,2,6,4], [4,5,6,9])
plt.show()
return
需要说明的是,中文字符前要加u
的前缀,否则也会编译报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)