解决Macos中Python Matplotlib库中文显示乱码问题

前言

Hello!小伙伴!
非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~
 
自我介绍 ଘ(੭ˊᵕˋ)੭
昵称:海轰
标签:程序猿|C++选手|学生
简介:因C语言结识编程,随后转入计算机专业,有幸拿过一些国奖、省奖…已保研。目前正在学习C++/Linux/Python
学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!
 
初学Python 小白阶段
文章仅作为自己的学习笔记 用于知识体系建立以及复习
题不在多 学一题 懂一题
知其然 知其所以然!

解决方法

这个问题自己还是困扰了挺久,最开始的时候在菜鸟教程中找到了一个解决办法

虽然可以解决中文乱码问题,但是每次使用中文时都需要设置字体类型,非常麻烦

然后在百度找到了一些方法,发现写的不是很明白,以及遇到了一些坑

这里总结一下,分享给小伙伴

步骤1

如果之前安装了Matplotlib库,建议先卸载,重新装一遍

海轰之前按照教程 一次都没有成功 后面重新安装了一次Matplotlib 一下就成功了!

卸载

pip3 uninstall Matplotlib

安装

pip3 install Matplotlib

步骤2

下载中文字体

ttf格式就可以

具体可以百度搜索 或者 找海轰要字体安装包也可以

然后解压出来(解压出啥就可以 不用重命名)

在这里插入图片描述

步骤3

找到Matplotlib的安装位置 (这个就自己找了吧)

# 海轰的安装位置
/Users/haihong/Library/Python/3.7/lib/python/site-packages

在这里插入图片描述
进入Matplotlib文件夹,找到mpl-data文件夹
在这里插入图片描述
进入Matplotlib文件夹,找到fonts文件夹
在这里插入图片描述
进入fonts,找到ttf文件夹
在这里插入图片描述
将下载好的字体粘贴到这里
在这里插入图片描述
然后双击字体,选择安装这个字体(重点!)
在这里插入图片描述

步骤4

在mpl-data文件夹中找到matplotlibrc
在这里插入图片描述
以文本编辑打开这个文件
在这里插入图片描述
找到font.family(使用command+f查找即可)

然后去除前面的#号

这里显示的去除后的,本来前面有一个#号

在这里插入图片描述
然后找到font.sans-serif

同样也是去除前面的#号

这里是去除后的图片

在这里插入图片描述
然后在最后添加Microsoft YaHei
在这里插入图片描述

保存文件后,退出

步骤5

这样一来,每次只需要添加下面两句代码,就可以正确显示中文啦

font = {
    "family": "Microsoft YaHei"
}
matplotlib.rc("font", **font)

重启编译器,测试中文是否显示正确

测试代码:

import matplotlib
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import leastsq
 
font = {
    "family": "Microsoft YaHei"
}
matplotlib.rc("font", **font)
plt.figure(figsize=(9, 9))
X = np.array([8.19, 2.72, 6.39, 8.71, 4.7, 2.66, 3.78])
Y = np.array([7.01, 2.78, 6.47, 6.71, 4.1, 4.23, 4.05])
 
 
# 计算以p为参数的直线与原始数据之间误差
def f(p):
    k, b = p
    return (Y - (k * X + b))
 
 
# leastsq使得f的输出数组的平方和最小,参数初始值为[1,0]
r = leastsq(f, [1, 0])
k, b = r[0]
plt.scatter(X, Y, s=100, alpha=1.0, marker='o', label=u'数据点')
x = np.linspace(0, 10, 1000)
y = k * x + b
ax = plt.gca()
plt.plot(x, y, color='r', linewidth=5, linestyle=":", markersize=20, label=u'拟合曲线')
plt.legend(loc=0, numpoints=1)
leg = plt.gca().get_legend()
ltext = leg.get_texts()
plt.setp(ltext, fontsize='xx-large')
plt.xlabel(u'安培/A')
plt.ylabel(u'伏特/V')
plt.xlim(0, x.max() * 1.1)
plt.ylim(0, y.max() * 1.1)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.legend(loc='upper left')
plt.show()

在这里插入图片描述

注:如果还是不成功,就再卸载Matplotlib,重新安装一遍,然后按照前面的步骤做一遍,基本上就可以了

结语

文章仅作为学习笔记,记录从0到1的一个过程

希望对您有所帮助,如有错误欢迎小伙伴指正~

我是 海轰ଘ(੭ˊᵕˋ)੭

如果您觉得写得可以的话,请点个赞吧

谢谢支持 ❤️

在这里插入图片描述

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海轰Pro

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值