解决jupyter以及windows系统中pycharm编译器画图的中文乱码问题大全

举报
心无旁骛~ 发表于 2023/07/12 18:57:14 2023/07/12
【摘要】 解决jupyter以及windows系统中pycharm编译器画图的中文乱码问题大全

一、jupyter环境下中文乱码问题解决

我们在jupyter的notebook中使用matplotlib画图的时候,经常性的会遇见一些中文乱码显示□的情况,如下所示:
image.png

在此,网上给出的方法大多是以下的解决方法:

import matplotlib.pyplot as plt


plt.rcParams['font.sans-serif']=['SimHei']  #解决中文显示乱码问题
plt.rcParams['axes.unicode_minus']=False  #解决坐标轴负数的负号显示问题

但是,我们发现有时候按照上面的步骤进行后,依然还是中文乱码~

这时候就需要我们思考一下,为什么根据网上的方法依然解决不了这个问题。

其实,很有可能是因为我们没有SimHei或者你设置的其它字体,这时候我们有两种选择,一种是下载你所没有的字体,放到你的字体库中,第二种方法是使用你所拥有的字体。

那么问题这时候又来了,怎么查看自己所有用的字体呢?博主给出以下代码解决。

import matplotlib
a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])
for i in a:
print(i)

运行结果如下:
image.png

以上就是我们已经拥有的字体。这时候我们只需要将拥有的字体名称与‘SimHei’或者你设置的没有的字体替换即可。

替换之后我们可以发现,现在中文乱码就消失了。
image.png

这里最后再给出其它两种方法:
方法一:

import matplotlib
font = {
‘family’:‘SimHei’,
‘weight’:‘bold’,
‘size’:12
}
matplotlib.rc(“font”, **font)

方法二:

from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=14)
x = [1,2,3,4]
y = [3,2,1,3]
plt.plot(x,y)
plt.xlabel(“x轴标签”,fontproperties=font)
plt.show()

虽然方法多多,但是一般我们最常用的便是我刚开始讲解的方法,而且非常有效。

二、windows系统pycharm编译器画图中文乱码问题解决

简单的方法和jupyter的解决方法一致。

这里再给出一种一劳永逸的解决方法,具体如下:

首先输入以下代码,获得我们的matplotlib安装路径:

import matplotlib
print(matplotlib.matplotlib_fname()) #将会获得matplotlib包所在文件夹

我的安装路径是:D:\Anaconda\lib\site-packages\matplotlib\mpl-data\matplotlibrc

我的是Anaconda环境,当然python环境操作是一样的。

然后进入C:\Windows\Fonts中,找到简体字(黑体常规),然后复制它。
image.png

然后进入我们通过上面代码输出的matplotlib安装路径中,按照我的是D:\Anaconda\Lib\site-packages\matplotlib\mpl-data\fonts\ttf。有的人可能直接在D:\Anaconda\Lib\site-packages\matplotlib\mpl-data\fonts目录下就有。最后我们只需要粘贴我们赋值的SimHei字体即可。
image.png

最后,我们进入到D:\Anaconda\lib\site-packages\matplotlib\mpl-data\matplotlibrc中,即:
image.png

这里采用记事本打开方式即可。
image.png

找到#font.family:在这里我已经取消了#的注释,然后我们在下面加一行font.family: simhei,或者向我一样取消font.family: sans-serif的注释,然后再下面的font.sans-serif:里面加一个SimHei。

image.png

这时候中文乱码问题就彻底解决了~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。