Linux Ubuntu 16.04 Python matplotlib安装中文字体,Times New Roman等

文章目录

  • Linux Ubuntu 16.04 Python matplotlib安装中文字体,Times New Roman等
    • 一、用apt-get工具安装Times New Roman字体,即安装ttf-mscorefonts-installer,但此字体包,不包括楷体,黑体等。
    • 二、将Windows下的黑体,楷体等安装到Ubuntu及matplotlib下。
    • 三、将上面拷贝的字体上传到Ubuntu系统(注意Linux系统权限问题)
    • 四、刷新Ubuntu系统字体缓存,和matplotlib字体缓存(matplotlib的字体缓存也要刷新,matplotlib才能用,重要)
    • 五、接下来就是,刷新matplotlib字体缓存了。
    • 六、但是,我发现竟然用楷体的时候有个问题
    • 七、参考文献

当我们在Ubuntu Linux下使用Python matplotlib画图时,会发现不能用Times New Roman,楷体,黑体等Windows上常用的字体,尤其是用中文显示图标签时,会出现小方框/块,这是因为Linux下本身不自带这些常用字体(因为版权原因)。因此需要我们自己动手装,本人查找了了网上好多篇用时一天,,总之一言难尽,最后终于整好了。记录下了特别详细了的步骤,以供需要之人参考。绝对可靠。

一、用apt-get工具安装Times New Roman字体,即安装ttf-mscorefonts-installer,但此字体包,不包括楷体,黑体等。

如果只需用Times New Roman字体,可以参见本人此篇博客。 Ubuntu下安装Times New Roman字体.

二、将Windows下的黑体,楷体等安装到Ubuntu及matplotlib下。

上面提到mscorefonts这个字体包里不包含楷体黑体等,因此需要将Windows下的字体安装到Ubuntu下。下面以安装黑体为例,讲解具体步骤,学会一种,其它字体一样。

首先在Windows下,进入C:\Windows\Fonts目录,找到你想要的字体,即黑体,拷贝到一个新建文件夹,如本人命名的winfonts。如下两图

三、将上面拷贝的字体上传到Ubuntu系统(注意Linux系统权限问题)

本人用的Xshell和Xftp。在这一步,一直在上传到Ubuntu时,不成功,终于想到是权限问题。如下图,提示权限不够,第一次碰到Xftp上传不成功。。。正好Xftp5还强制更新,还以为这软件不更新用不了上传功能了,不过因为这次上传问题,让我发现要注意到Linux普通用户是不能改动根目录下文件夹,会提示权限不够。如下图,失败case。

这种情况,就是你直接把Windows下文件拷贝到Ubuntu虚拟机的/usr/share/fonts目录时,权限不够。查看/usr/share/fonts的权限如下

可以看到,普通用户是无法向这个目录写入文件的。因此我用su root命令切换到超级用户,发现竟然还是这个错误,不清楚为什么,各位博友,有清楚的请在评论中指出。但是,问题总会有多种方法解决的。不能直接上传到根目录下,那就先上传到普通用户下吧,也就是本人的家目录。如下图,
可以看到终于成功了,很欣慰。。。

此时就好办了,切换到root用户将其拷贝到/usr/share/fonts目录下即可,有三种方式,
1)第一种两行代码
sudo -i #或者用su root,都是切换到root用户
cp -rf /home/rain/winfonts/ /usr/share/fonts
2)第二种一行代码,不用切换到root用户
sudo cp -rf winfonts/ /usr/share/fonts
3)第三种就是用户界面方式操作,就是用root权限打开一个文件管理器窗口,这种就跟Windows操作一样了,直接赋值粘贴即可。
sudo nautilus

到这里,我们终于把文件拷贝到/usr/share/fonts目录下了。如下图,

四、刷新Ubuntu系统字体缓存,和matplotlib字体缓存(matplotlib的字体缓存也要刷新,matplotlib才能用,重要)

这一步该刷新字体缓存了。首先在Ubuntu上打开LibreOffice,看一下字体里是没有黑体的,如下图

没装没刷新之前当然没有了!!
现在来用命令
sudo fc-cache -f -v
刷新Ubuntu字体缓存。如下图可以看到在我们的目录/usr/share/fonts/winfonts中找到一种新字体,就是咱们要安装的黑体啊!!!

然后重新打开libreoffice,见证奇迹的时刻!!!

我们的黑体终于能用了!!!到这里,你会发现你想用其它的楷体,宋体,都可以按上面步骤安装了。我在网上查到诸多博客,好多都。。。你们懂得,我用时一天终于自己摸索出来,特此记下来。希望对看到的你有所帮助。我们整理东西一定要自己验证过,要把重要细节写完美,否则,发到网上的都是垃圾内容。

五、接下来就是,刷新matplotlib字体缓存了。

首先看问题,如果在Ubuntu Linux下用matplotlib画图,如果没有安装中文字体。在中文处则显示乱码小方块。如下图

因此,我们要先安装中文字体,步骤就是上面。但是经过刚刚明明看到我们已经安装黑体,但是为什么还是显示乱码小方块呢。就是没有刷新matplotlib的字体缓存了。首先打开一个Python环境,找到matplotlib字体缓存目录。如下代码:
import matplotlib as plt
plt.get_cachedir()
本人机器上操作的如下图,

直接用如下命令
rm -rf /home/rain/.cache/matplotlib
删除这个缓存目录就可以了。如下图

接着在运行一下刚才的画图程序,见证奇迹的时刻到了!!!如下图


到这里,终于解决Ubuntu上Python matplotlib画图,用中文字体,simhei,times new roman的问题了。

六、但是,我发现竟然用楷体的时候有个问题

当在.py文件中用楷体时竟然还是小方块???明明libreoffice里面已经可以用了。难道是引用字体名不对?如下图:


看来的SimKai这个名字不对了,可以用如下命令看一下楷体的引用名是什么:
import matplotlib as plt
import matplotlib.font_manager as font_manager
fontpath = '/usr/share/fonts/truetype/msttcorefonts/simkai.ttf'
prop = font_manager.FontProperties(fname=fontpath)
print(prop.get_name())
结果如下图,竟然叫‘KaiTi’而不是‘SimKai’????

在.py文件中更证名字,然后又到了见证奇迹的时刻!!如下图


到这里你终于学到如果解决Ubuntu Python matplotlib画图中所以字体问题了,真是百转千折,但是你也深入了解了Linux许多原理,对于需要经常用Linux的你还是非常有帮助,如果你只需要用Python做机器学习换图,建议还是用windows+Anaconda+PyCharm+Notebook吧,不会遇到这么多配置问题,实力劝退一波哈哈。


七、参考文献

[1] https://blog.csdn.net/u014712482/article/details/80568540
[2] https://www.zhihu.com/question/25404709

Linux Ubuntu 16.04 Python matplotlib安装中文字体,黑体,楷体,Times New Roman等,解决中文乱码相关推荐

  1. peazip 64 linux,Ubuntu 16.04中下载安装PeaZip 6.5.0档案管理器

    PeaZip是一款免费开源的图形化档案管理器和压缩工具,它可以安装在Linux.BSD.Windows操作系统上,目前最新版本是PeaZip 6.5.0.它支持180种以上档案文件格式,包括rar.z ...

  2. linux ubuntu 16.04 flash插件安装

    一.打开火狐浏览器任意搜索视频点击页面显示的flash插件升级 二.下载符合自己linux的flash插件,我这里下载的是: tar -zx -finstall_flash_player_11_lin ...

  3. Linux ubuntu 装openCV,Linux(ubuntu 16.04) 安装 opencv C++

    Linux(ubuntu 16.04) 安装 opencv C++ Linux(ubuntu 16.04) 安装 opencv C++ 参考文档: https://blog.csdn.net/qq_3 ...

  4. 在linux搭建wiki教程,在Ubuntu 16.04系统上安装WikkaWiki

    一.WikkaWiki介绍 WikkaWiki是一个灵活的.兼容标准的.轻量级的.平台独立的开源Wiki引擎,它使用PHP语言开发,后端存储采用了MySQL数据库.WikkaWiki的设计目标是速度快 ...

  5. Linux Ubuntu 16.04 安装 yaml-cpp ROS 下参数服务器及yaml-cpp实现参数读写

    Linux Ubuntu 16.04 安装 yaml-cpp & ROS 下使用.yaml文件实现参数读写 0. 准备工作 1. 安装yaml-cpp 2. ROS中使用.yaml文件实现参数 ...

  6. linux加protobuf变量环境,protobuf简单介绍和ubuntu 16.04环境下安装教程

    protobuf简单介绍 protobuf是谷歌的开源序列化协议框架,结构类似于XML,JSON这种,显著的特点是二进制的,效率高,主要用于通信协议和数据存储等方面,算是一种结构化数据的表示方法. p ...

  7. Ubuntu 16.04 一系列软件安装命令,包括QQ、搜狗

    2019独角兽企业重金招聘Python工程师标准>>> Ubuntu 16.04 一系列软件安装命令,包括QQ.搜狗.Chrome.vlc.网易云音乐安装方法 2016年07月20日 ...

  8. 【转】Ubuntu 16.04 Nvidia驱动安装(run方式)

    转自:Ubuntu 16.04 Nvidia驱动安装(run方式)_lihe的博客-CSDN博客 1.下载驱动程序 Nvidia驱动下载 https://www.geforce.cn/drivers/ ...

  9. ubuntu安装pr_在Ubuntu 16.04服务器上安装Zabbix 3.2

    监控服务器 - 什么是Zabbix Zabbix是企业级开源分布式监控服务器解决方案. 该软件监控网络的不同参数和服务器的完整性,还允许为任何事件配置基于电子邮件的警报. Zabbix根据存储在数据库 ...

最新文章

  1. JTable动态显示隐藏列
  2. Wormholes 虫洞 BZOJ 1715 spfa判断负环
  3. 如何实现把固定内容自动写入excel_Odoo如何实现基于关联数据自动写入本表数据项的实施技巧分享...
  4. hubbledotnet 远程连接提示:无法从传输连接中读取数据:远程主机强迫关闭一个现有的连接...
  5. 系统聚类(hierarchical clustering analysis)
  6. 【Spring MVC】自定义拦截器 Interceptor
  7. python打印网页成pdf_vue中将网页打印成pdf
  8. Full Tank?
  9. Java 程序员必须掌握的 Linux 命令
  10. 非vue子页面 调用vue父页面方法
  11. QQ音乐限制专辑重复购买 此前已取消人气榜等非作品类排名
  12. 2021年中国宠物食品加工设备市场趋势报告、技术动态创新及2027年市场预测
  13. Skype for Business Server 2015-12-WAP-发布-1-前端服务器-OWAS01
  14. 浅谈C#的语法特性及杂七杂八
  15. 利用python爬取电影资源
  16. 南大通用极速内存数据库
  17. workstation服务启动报错。错误1075:依存服务不存在, 或已标记为删除的解决方法
  18. chromium双核浏览器实现
  19. 车轱辘APP提交到各应用市场的心得~
  20. HTTP Error 503

热门文章

  1. vue问题:如何敲简单的使用vue-i18n实现多语言切换?
  2. CocosCreator3D插件教程(1):hello-world
  3. 初次使用CardView设置圆角等属性出现的问题(设置圆角出现层叠,外层View多出角的问题)
  4. QGIS基本功 | 19 QGIS工程文件剖析
  5. 一段时间内两次买进卖出股票使得收益最大(C++版)
  6. 2020年第一场面试题汇总
  7. 阿里云虚拟主机子目录绑定二级域名详解
  8. 详解AI芯片和传统芯片的差别,到底在那里?
  9. 你想尝试Web3工作吗?看这篇文章就够了
  10. Mac 一键解决 一键安装brew -bash: brew: command not found