(Python 3)关于matplotlib显示中文

标签: 学习笔记

前言

遇到了一个挺头疼的问题,就是关于matplotlib绘制出来的图怎么显示中文。默认情况下,比如下面这句

plt.title('2019-nCoV疫情曲线', fontsize=20)

显示出来的标题带有方框,识别不出中文(如图)。找了挺久,试了几种方法,现在终于可以了。
在这里插入图片描述

环境

  • ubuntu16.04
  • pycharm
  • python3
  • matplotlib

过程

很多文章都说要加上下面这句,加了之后一般没效果。原因在于里面的字体库没有所提到的SimHei字体。

#解决中文显示问题
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False

解决方法自然是先要找出matplotlib的字体放在哪,然后去下相应的字体,再把字体放进去。以下操作是在pycharm 中进行的。

  • 进到python console(pycharm 底下有,不然找个终端输入python进入),输入以下代码即可查看字体路径,比如我的是
    /home/xxx/PycharmProjects/Wuhan/venv/lib/python3.5/site-packages/matplotlib/mpl-data/matplotlibrc
import matplotlib    
print(matplotlib.matplotlib_fname())
  • 之后去下载SimHei字体
    字体链接

  • 下载完成之后将其放到/home/xxx/PycharmProjects/Wuhan/venv/lib/python3.5/site-packages/matplotlib/mpl-data/fonts/ttf下面

在这里插入图片描述

这个时候可以做个测试,发现依然是显示不了汉字。

  • 之后在home目录下,执行 ctrl + h ,打开隐藏目录, 删除 ~/.cache/matplotlib的缓冲目录
sudo rm -r ~/.cache/matplotlib
  • 接下来要修改matplotlibrc文件,文件位置如图

在这里插入图片描述

双击打开文件,ctrl+f 搜索相应的关键字快速定位。需要修改的部分如***意保存):

在这里插入图片描述
在这里插入图片描述
图中代码:

    font.family         : sans-serif        
    font.sans-serif     : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif 
    axes.unicode_minus,将True改为False,作用就是解决负号'-'显示为方块的问题   

改完之后也就不需要.py文件里的这两行代码了,可以注释掉或者删掉

# plt.rcParams['font.sans-serif']=['SimHei']
# plt.rcParams['axes.unicode_minus'] = False
  • 效果

在这里插入图片描述

版权声明:本文为sf9898原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sf9898/article/details/104176727

智能推荐

Python 中,matplotlib绘图无法显示中文的问题

原文链接:Python 中,matplotlib绘图无法显示中文的问题 在python中,默认情况下是无法显示中文的,如下代码: 得到图像如下: 产生中文乱码的原因就是字体的默认设置中并没有中文字体,所以我们只要手动添加中文字体的名称就可以了 手动增加如下代码 源代码修改如下: 最终得到图像 成功!...

python matplotlib 中如何显示中文字符

                                                        &nbs...

python使用matplotlib时不支持中文显示问题

在使用matplotlib作图时会默认不支持中文显示,如图 解决方案:从网上下载一个中文字体:微软雅黑.ttf 下载链接 然后通过font_manager设置即可 关键代码: 全部代码: 结果:...

Python 之使用 matplotlib 画图中文显示乱码

在 Ubuntu 18.0 系统上使用 matplotlib 画图,其中在添加中文作为标题或者坐标轴名称时,显示为乱码,如下所示: 这是因为在 Ubuntu 系统上默认没有中文字体。所以需要手动下载一个字体,并且添加到 matplotlib 库的字体路径下。 1、下载字体 比如我在网上下载的是 黑体: 2、找到 matplotlib 字体所在的位置 进入 Python 的交互界面,输入如下命令: ...

如何让 python matplotlib 库正常显示中文

背景 最近在学习 Python 著名的绘图包 matplotlib 时,运行 Python 脚本的时候会报错,大致报错信息如下: Font family [‘sans-serif’] not found. Falling back to DejaVu Sans. 参考网上的一些解决办法后,自己也总结了一下,下面就详细讲讲。 解决步骤 首选,需要 simhei.ttf 文件 ...

猜你喜欢

python matplotlib读取Excel文件绘制图显示中文

python matplotlib读取Excel文件绘制图显示中文...

Python绘图问题:Matplotlib中如何正确显示中文

解决这个问题有多种方法,这里只介绍一种最简便的方法。只需要加一个import,加一行代码,再稍微修改对应位置就可以了。 一、先看一下错误显示 可以看出横轴纵轴的中文未能正确显示。 二、那么应该如何调整呢? 完美解决,也适合懒人。其他方法需要找到文件夹做修改,个人不太建议这样,能用代码的东西最好别用手动^_^。 三、永久性解决方案 原以为第一种方法就足够了,然而才用了不到半天,当我试图在一个柱状图的...

冒泡排序,及改进方式,性能优化400%>>>附图解加源码

首先源码附上,源码中带有注释,看不懂没关系,源码后面附带图解,最后附上代码效率提升图 源码如下: 方案一:其实实现很简单,两层循环,每次内层迭代出最大的一个值,将其放入数组最后一个位置,外层循环的末端便往前移一位。其原理如下图 方案一代码块: 方案二:优化改进 仔细观察上面的图,我们不难发现当迭代到图下这样的情况时,其实已经全排序好了,但是我们还是需要对它进行1,2,3,4,5,6的迭代,这些情况...

css3常用选择器

先介绍一下基本选择器,如下几种 *:通配符。选择页面的所有元素 E:元素选择器。对页面的一些元素进行选择,如p,div,li等 .class:类选择器 #id:id选择器。一个Id在一个页面中只能选择,这是和类选择器的区别 E F:后代选择器。如ul li。选中ul下的li E>F:子元素选择器。如下,可以用 h1 > strong {color:red;}使h1的子元素strong变...

python is not set from command line or npm configuration

问题 猜测原因  python版本冲突 解决方案  去官网找到最新版本python 点击下载,注意记住你下载的目录,下载好以后,打开这个目录下的文件夹,Python310, 整个文件夹复制一下 在项目里运行npm config list --json 找到python的路径   我的是 C:\\Python27\\python.exe 说明项目里用的还是py...