python中matplotlib绘图中文乱码

目录

    • 1. 修改方法
    • 2. 原理介绍
    • 3. 解决办法
    • 4. axes.unicode_minus

1. 修改方法

加入代码

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']  # 运行配置参数中的字体(font)为黑体(SimHei)
plt.rcParams['axes.unicode_minus']=False  # 运行配置参数总的轴(axes)正常显示正负号(minus)

原图
python中matplotlib绘图中文乱码_第1张图片
后来效果
python中matplotlib绘图中文乱码_第2张图片

2. 原理介绍

  • Sans-serif是专指西文中没有衬线的字体,与汉字字体中的黑体相对应。
  • ‘SimHei’ 表示引用simhei.ttf文件,
  • 定义font-family时,最好在最后加一个sans-serif,这样如果所列出的字体都不能用,则默认的sans-serif字体能保证调用
  • W3C建议字体定义的时候,最后以一个类别的字体结束,例如"sans-serif",以保证在不同操作系统下,网页字体都能被显示。

疑问

  • 1.为什么sans-serif就能保证调用?
  • 2.什么是种类族科??又为什么以能保证在不同操作系统下,网页字体都能被显示??

回答

  • 1、sans-serif无衬线字体,是一类字体,它在操作系统或者浏览器里是可以设置的,你可以把它设置成宋体,也可以设置成微软雅黑,而设置的这种字体肯定是当前系统里存在的字体,所以使用这个字体就一肯能显示出来,所以加上sans-serif就能保证调用。Sans-serif简介:Sans-serif是专指西文中没有衬线的字体,与汉字字体中的黑体相对应。该类字体通常是机械的和统一线条的,它们往往拥有相同的曲率,笔直的线条,锐利的转角。

  • 2、sans-serif就是无衬线字体,是一种通用字体族。

  • 常见的无衬线字体有 Trebuchet MS, Tahoma, Verdana, Arial, Helvetica, 中文的幼圆、隶书等等。

  • font-family最后加上sans-serif,也是为了保证能够调用这个字体族里面的字体,因为大多数计算机里都有这种字体。

如下图是我添加之后的文件夹字体显示

python中matplotlib绘图中文乱码_第3张图片

3. 解决办法

  • 1、下载simhei.ttf字体,这里提供一个链接SimHei.ttf
  • 2、找到你的解释器的fonts文件夹下的ttf文件夹,例如我的解释器是Anaconda,在Anaconda的安装目录下,fonts文件夹的位置如上图的路径:D:\AnaInstallDir\Anaconda3\Lib\site-packages\ matplotlib\mpl-data\fonts\ttf。
    若解释器是自己安装的Python,文件夹的位置一般为:
    C:\Users\用户名\AppData\Local\Programs\ Python\ Python35\Lib\site-packages\matplotlib\mpl-data\fonts\ttf
  • 3、将下载的SimHei.ttf文件放入ttf文件夹下再运行程序就OK啦(即代码plt.rcParams[‘font.sans-serif’] = [‘SimHei’]可以运行)

4. axes.unicode_minus

plt(matplotlib.pyplot)使用 rc 配置文件来自定义图形的各种默认属性,称之为 “ rc 配置” 或 “ rc 参数”。

通过 rc 参数可以修改默认的属性,包括窗体大小、每英寸的点数、线条宽度、颜色、样式、坐标轴、坐标和网络属性、文本、字体等。

rc参数存储在字典变量中,通过字典的方式进行访问。

你可能感兴趣的:(Python初级,matplotlib,python,开发语言)