一、jupyter环境下中文乱码问题解决
我们在jupyter的notebook中使用matplotlib画图的时候,经常性的会遇见一些中文乱码显示□的情况,如下所示:
在此,网上给出的方法大多是以下的解决方法:
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)
运行结果如下:
以上就是我们已经拥有的字体。这时候我们只需要将拥有的字体名称与‘SimHei’或者你设置的没有的字体替换即可。
替换之后我们可以发现,现在中文乱码就消失了。
这里最后再给出其它两种方法:
方法一:
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
中,找到简体字(黑体常规),然后复制它。
然后进入我们通过上面代码输出的matplotlib安装路径中,按照我的是D:\Anaconda\Lib\site-packages\matplotlib\mpl-data\fonts\ttf
。有的人可能直接在D:\Anaconda\Lib\site-packages\matplotlib\mpl-data\fonts
目录下就有。最后我们只需要粘贴我们赋值的SimHei字体即可。
最后,我们进入到D:\Anaconda\lib\site-packages\matplotlib\mpl-data\matplotlibrc
中,即:
这里采用记事本打开方式即可。
找到#font.family:
在这里我已经取消了#的注释,然后我们在下面加一行font.family: simhei
,或者向我一样取消font.family: sans-serif
的注释,然后再下面的font.sans-serif:
里面加一个SimHei。
这时候中文乱码问题就彻底解决了~