Matplotlib无法正常显示中文

1、问题描述

使用matplotlib绘制图表时出现显示错误,以气温绘制为例

from matplotlib import pyplot as plt
import random
x = range(0,120)
y = [random.randint(20,35) for i in range(120)]
plt.figure(figsize=(20,8),dpi=80)
plt.plot(x,y)
#调整x轴的刻度
_xtick_labels = ["10点{}分".format(i) for i in range(60)]
_xtick_labels += ["11点{}分".format(i) for i in range(60)]
plt.xticks(list(x)[::3], _xtick_labels[::3], rotation=45)
plt.xlabel("时间")
plt.ylabel("温度 单位(°C)")
plt.title("10点到12点每分钟的气温变化情况")
plt.show()

请添加图片描述
从图中可以看到中文无法正常显示

2、解决方案

1)使用matplotlib.rcParams
# 使用matplotlib.rcParams
matplotlib.rcParams['font.sans-serif']=['SimHei']
# 支持负号显示
matplotlib.rcParams['axes.unicode_minus']=False
plt.xlabel("时间")
plt.ylabel("温度 单位(°C)")
plt.title("10点到12点每分钟的气温变化情况")
plt.show()

再次运行就可以看到显示正常了
请添加图片描述

2)使用Matplotlib中的font_manager
# 使用font_manager
my_font = font_manager.FontProperties(fname=r"c:\windows\fonts\simsun.ttc")
#取步长,数字和字符串一一对应,数据的长度一样
plt.xticks(list(x)[::3],_xtick_labels[::3],rotation=45,fontproperties=my_font) #rotaion旋转的度数

#添加描述信息
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度 单位(℃)",fontproperties=my_font)
plt.title("10点到12点每分钟的气温变化情况",fontproperties=my_font)
plt.show()

再次运行即可得到正确显示结果
请添加图片描述

补充内容:

在windows平台下字体路径位于C:\Windows\Fonts,如图所示:
请添加图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值