说到底,乱码的原因是因为没有安装中文字体导致的,所以首先要做的就是安装一个中文字体。

报表中发现有中文乱码和中文字体不整齐(重叠)的情况,首先考虑的就是操作系统是否有中文字体,在CentOS 7中发现输入命令查看字体列表是提示命令无效: 
 
如上图可以看出,不仅没有中文字体,连字体库都没有,那么接下来就记录一下在Linux CentOS 7中如何安装字体库以及中文字体。

安装字体库

在CentOS 4.x开始用fontconfig来安装字体库,所以输入以下命令即可:

yum -y install fontconfig
  • 1

当看到下图的提示信息时说明已安装成功: 

这时在/usr/shared目录就可以看到fonts和fontconfig目录了(之前是没有的): 

接下来就可以给我们的字体库中添加中文字体了。

添加中文字体

在CentOS中,字体库的存放位置正是上图中看到的fonts目录,所以我们首先要做的就是找到中文字体文件放到该目录下,而中文字体文件在我们的windows系统中就可以找到,打开c盘下的Windows/Fonts目录: 

如上图,我们只需要将我们需要的字体拷贝出来并上传至linux服务器即可,在这里我选择宋体和黑体(报表中用到了这两种字体),可以看到是两个后缀名为ttf和ttc的文件: 
在这之前我们还需要新建目录,首先在/usr/shared/fonts目录下新建一个目录chinese: 

然后就是将上面的两个字体上传至/usr/shared/fonts/chinese目录下即可: 

紧接着需要修改chinese目录的权限:

chmod -R 755 /usr/share/fonts/chinese
  • 1

接下来需要安装ttmkfdir来搜索目录中所有的字体信息,并汇总生成fonts.scale文件,输入命令:

yum -y install ttmkfdir
  • 1

当看到下图的提示信息时说明已安装成功: 

然后执行ttmkfdir命令即可:

ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
  • 1

最后一步就是修改字体配置文件了,首先通过编辑器打开配置文件:

vi /etc/fonts/fonts.conf
  • 1

可以看到一个Font list,即字体列表,在这里需要把我们添加的中文字体位置加进去: 
 
然后输入:wq保存退出,最后别忘了刷新内存中的字体缓存,这样就不用reboot重启了:

fc-cache
  • 1

这样所有的步骤就算完成了,最后再次通过fc-list看一下字体列表: 

可以看到已经成功安装上了中文字体,至此安装过程就全部结束,再次查看报表可以发现中文样式和内容均已可以正常显示了。

接下来,按照如下代码,就可以实现坐标轴,label,title的中文显示了

#-*- coding:utf8 -*-import pdb
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
#import pandas as pd
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.dates as mdate
from matplotlib import rcParamsdef draw_pic(x, y_lst, pic_file, pic_title, x_label, y_label):  font = matplotlib.font_manager.FontProperties(fname='/usr/share/fonts/chinese/simkai.ttf', size=14)plt.figure(figsize=(10, 6))plt.xticks(rotation=90)  plt.title(pic_title, fontproperties=font)plt.xlabel(x_label, fontproperties=font)plt.ylabel(y_label, fontproperties=font)ax = plt.gca()ax.patch.set_facecolor("gray") ax.patch.set_alpha(0.5)ax.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))x_yingshe = np.array(range(len(x)))for y in y_lst:title = y[0]color = y[1]data = y[2]  plt.xticks(x_yingshe, x)  plt.plot(x_yingshe, data, '-', label=title)ax.grid()plt.subplots_adjust(0.1,0.2)  plt.legend(loc=(0.78, 0.8), prop=font)plt.savefig(pic_file)if __name__ == '__main__':x = ['a','b','c']y_lst = []y_lst.append([u'哈哈', 'r', [4, 9, 10]])y_lst.append([u'你好', 'g', [40, 90, 100]])draw_pic(x, y_lst, 'test.png', u'测试', u'时间', u'词数')

显示的结果如下

matplotlib画折线图中文乱码解决相关推荐

  1. matplotlib从折线图入门并解决中文乱码

    matplotlib从折线图入门并解决中文乱码 1. 第一个折线图 2. 中文乱码 3. 中文乱码解决方法 3.1 方法一:调用系统文字 3.2 方法二:使用自定义文字 [安装后查看matplotli ...

  2. python设置折线图标题字体为宋体_python中matplotlib画折线图实例(坐标轴数字、字符串混搭及标题中文显示)...

    最近在用python中的matplotlib画折线图,遇到了坐标轴 "数字+刻度" 混合显示.标题中文显示.批量处理等诸多问题.通过学习解决了,来记录下.如有错误或不足之处,望请指 ...

  3. 如何使用python画折线图-Python 使用 matplotlib 画折线图教程

    话不多说,直接上代码.最近修改一篇论文,实验部分的图全部重画了一下,也正好在此进行整理.使用 Python 的 matplotlib 库来画图还是比较方便的,今天整理一下用 matplotlib 画折 ...

  4. Matplotlib画折线图

    Matplotlib画折线图 有一些离散点,想看看这些点的变动趋势: import matplotlib.pyplot as pltx1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1 ...

  5. 科学数据库Python——matplotlib画折线图

    matplotlib绘制折线图基础操作 matplotlib基础绘图 设置图片大小 保存到本地 调整x或者y轴刻度的间距 解决matplotlib的中文乱码问题 标题.x轴和y轴的描述信息 线条的样式 ...

  6. python matplotlib画折线图_python使用matplotlib绘制折线图教程

    matplotlib简介 matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序 ...

  7. python 折线图中文乱码_彻底解决 Python画图中文乱码问题--Pyplotz组件

    1 源起 自从开始学习Python,就非常喜欢用来画图.一直没有需求画要中文显示信息的图,所以没有配置Python中文的环境.由于昨天就需要画几十个形式相同,只是数据不同的图,并且需要显示中文信息.如 ...

  8. python 绘制折线图 显示纵坐标值_python怎样用matplotlib画折线图对比图

    在论文写作中经常会出现多个算法效果比较的折线对比图,本文就介绍一下,怎样通过python中的matplotlib库来画出折线对比图. 工具/原料 python matploblib 方法/步骤 1 M ...

  9. python中绘制折线图s是什么意思_python用pandas和matplotlib画折线图和条形图

    一.数据 数据是支付宝上收益周周乐从2019年9月21日到2020年3月21日共27期开奖结果,做此次分析是为了提高中奖的几率, 二.代码 1:pandas读取csv文件 import pandas ...

最新文章

  1. 解决方案:__init__() got an unexpected keyword argument ‘kill_previous‘
  2. 《Fabric 云存储的电子健康病历系统》(3)病历结构体API
  3. Drools学习笔记3—Conditions / LHS—字段约束连接字段约束操作符
  4. python word转txt_Python办公自动化| word 表格转excel
  5. QT学习:代理(Delegate)练习
  6. x722网卡支持百兆吗_同样是无线网卡,为什么要选千兆的?
  7. leetcode 453,462. Minimum Moves to Equal Array Elements I, II | 453, 462. 最少移动次数使数组元素相等(图解)
  8. oracle查看所有用户_Oracle实用命令查看共用一个表空间的所有用户
  9. 相机下载_佳能相机如何连接手机传输相片,视频?
  10. QT int QString char转换
  11. Java sychronized关键字总结(二)
  12. python3 shell,python3执行shell命令
  13. [it-ebooks]电子书列表v0.1.1
  14. 【MFC】如何使用MFC?MFC如何编写界面?MFC使用零基础教程
  15. 西电微原课设——矩阵式键盘数字密码锁设计
  16. 经常看直播,你知道如何用jmeter对直播间进行压力测试吗?
  17. 电子招标采购系统源码之从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。
  18. SIGGRAPH 2022 | 基于GAN的新动作合成
  19. zurb是什么网站_Zurb的Tribute库的Vue.js包装器,用于本机@mentions
  20. webdriver自动化测试工具的使用,将chromedriver配置到path环境变量中,并测试是否成功

热门文章

  1. 三、Tableau筛选器的使用
  2. 设计模式之享元(flyweight)模式
  3. java--tomcat
  4. 关于生命周期函数dealloc的使用小结
  5. posix thread条件变量
  6. Delphi TreeView失去焦点也选中
  7. 崩溃的数据库字符集问题
  8. 河外动态:疑似UFO的编队在太阳附近徘徊
  9. 我的设计模型之适配器模式
  10. 浅谈接口对前后端测试的意义