我的Python心路历程 第十期 (10.8 股票实战之数据可视化中文显示问题)

背景

今日我的Python心路历程是 股票实战之数据可视化中文显示问题)

分析

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

运行效果如下图所示:
在这里插入图片描述

需要说明的是,如果设置font时只是写字体文件名的话,那么编译会报错IOError: [Errno 2] No such file or directory: 'STFANGSO.ttf'。搜索对应字体文件并查询路径名后给予绝对路径后问题得以解决。

另外,有中文字符的代码必须使用u"算法",否则会编译报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)
错误代码如下:

    plt.title(u"题目"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值