matplotlib之轻松解决中文乱码的问题
作者:偶尔也吃鸡
这篇文章主要介绍了matplotlib之轻松解决中文乱码的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
matplotlib解决中文乱码问题
python里matplotlib模块在画图方面用着十分爽,但是在图中不能显示中文,这里介绍一种十分简单的解决方法。
1. 在代码开始加入两行代码,即可成功解决。
#解决中文显示问题 plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体 plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
2.效果展示
# -*- coding: utf-8 -*- import matplotlib.pyplot as plt import numpy as np #解决中文显示问题 plt.rcParams['font.sans-serif'] = ['KaiTi'] # 指定默认字体 plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题 x = np.linspace(-8, 8, 1024) y1 = 0.618 * np.abs(x) - 0.8 * np.sqrt(64 - x ** 2) y2 = 0.618 * np.abs(x) + 0.8 * np.sqrt(64 - x ** 2) plt.plot(x, y1, color='r') plt.plot(x, y2, color='r') plt.title("爱你一万年") plt.show()
3.代码加入前
4.代码加入后
5.注:以上为Windows下的方法,Mac下的解决方式 为:
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
Mac下matplotlib中文乱码的解决
初次用了中文运行,发现一直出现中文乱码情况,即使加上了前缀还是乱码。
参考了多方文章,最后解决。
建议如果有友友看过其他攻略,但还是不行的可以直接跳转步骤6。
解决办法
1.下载SimHei字体:http://www.fontpalace.com/font-details/SimHei/
2.运行以下代码,找到Matplotlib配置路径。
import matplotlib matplotlib.matplotlib_fname()
我的得到的是:
/Users/s/anaconda3/lib/python3.10/site-packages/matplotlib/mpl-data/matplotlibrc(这里每个人用户名后面会不一样,请自己灵活调整)
3.访问到此路径下,进入font/ttf/。
把步骤1下载的字体粘贴进去。
4.返回到步骤3的目录下,使用文本编辑器打开matplotlibrc(一般默认就是文本编辑器,不确定的可以右键查看打开方式)。
5.command+F 查找font.family: sans-serif,去掉前面的注释符#;
继续查font.sans-serif : ,在DejaVu Sans前添加SimHei
最后查找axes.unicode_minus,去掉注释并将值设置为False
6.(很重要!!)运行以下代码:
from matplotlib.font_manager import _rebuild _rebuild()
测试
import matplotlib.pyplot as plt import numpy as np x = np.array(["小杨", "小羊", "美女小杨", "美女小羊不失眠"]) y = np.array([12, 22, 6, 18]) plt.barh(x,y) plt.show()
成功!
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。