“前锋教育干货暴击”
如果你想更好地学习Python甚至转行,那就弯道超车,领先一步吧!本课程可以零基础学习,抓住大数据、机器学习、人工智能时代的红利,打开你的第一行代码!
↓↓↓
前锋教育Python教程_700集零基础Python入门熟练教程(保姆级新手教程)
前锋教育Python教程全集_Python零基础入门熟练度(学习后可达到Python工程师级别)
使用matplotlib可视化数据时,经常会面临字体设置的问题。当你要使用中文时,如果设置不当,就会出现乱码。网上已经有不少文章提供了一些解决方案,但大多是“授人以鱼”的片段。本文将系统讨论matplotlib中的字体管理,希望能“授人以渔”。环境:Windows10+anaconda(python)+matplotlib如果您的环境不同,相关程序安装在不同的位置,一些细节,如路径和数量可能不同,但它们可以“对应”您的环境。Matplotlib以三种方式使用字体:自包含的字体;系统字体;3.用户提供的第三方字体。注1。实践中,不建议调用用户字体目录中的第三方字体文件;2.有很多特殊字体不兼容,会报错。https://www.zhucesz.com/ 10系统字体Windows系统字体文件保存在C:\Windows\Fonts文件夹中。在资源管理器中打开此文件夹,该文件夹一般以大图标的形式显示。它看起来是这样的:
字体系列,相当于一个子文件夹,可以进一步打开,如下图所示:
在windows中,字体是以“字体文件”的形式保存的,而在应用软件中,为了调用的直观和方便,则
通过字体的“name”属性调用。2.字体文件的类型和字体类型字体文件格式和字体类型很多,常见的有:字体文件:。TTF.丰。https://www.zhucesz.com/和其他后缀(格式)。字体类型:OpenType、TrueType、Raster等。Raster Font(.fon):存储在不同大小的位图,用于在Windows系统中显示屏幕上的菜单、按钮等中的文本。并没有将其描述为矢量,但放大后会出现锯齿,只适用于屏幕描述。但它的显示速度非常快,因此在Windows中被用作系统字体。矢量字体虽然与光栅字体有着相同的外延,但都是由基于矢量的数学模型定义的,是Windows系统字体的一种。一些Windows应用程序在较大屏幕显示中自动使用矢量字体而不是光栅字体。事实上。fon字体文件是标准的windows可执行文件(.exe)格式,分为两种类型:NE(新可执行文件)和PE(可移植可执行文件),其中字体作为资源存在。TrueType字体(.TTF)TrueType是苹果和微软联合开发的计算机轮廓字体(曲线笔画)类型标准。这是我们在日常操作中接触最多的一种字体类型。它最大的特点是它是一种基于数学模型定义的轮廓技术的字体,这使得它们比基于矢量的字体更容易处理,并保证了屏幕和打印输出的一致性。同时,和矢量字体一样,这些字体可以随意缩放旋转,不用担心锯齿。OpenType标准还定义了OpenType文件名的后缀。包含TrueType字体的OpenType文件具有后缀。专题信托基金和包含员额脚本字体的文件后缀是。OTF.如果是包含一系列TrueType字体的字体包文件,则后缀为。https://www.zhucesz.com/字体度量这是由Adobe Corp.开发的,包含关于类型1 PostScript字体的度量功能的信息。AFM结构需要定义每个字体符号样式的控件模板。它主要用于UNIX。https://www.zhucesz.com/字体管理Matplotlib模块用于跨平台搜索、管理和使用字体。该模块提供了一个可以在后端和平台之间共享的FontManager实例。findfont函数返回本地或系统字体路径中与指定的FontPropelies实例匹配的最佳TrueType(TTF)字体文件。FontManager还处理PostScript后端使用的Adobe Font Metrics(AFM)字体文件。也就是说,matplotlib主要处理和使用TTF和AFM字体。字体文件可以保存在matplotlib的字体文件夹中,也可以保存在系统字体路径中。
该文件夹下有三个子文件夹,均为TTF和AFM格式字体文件。在TTF文件夹中大约有40个TTF字体文件。
打开。matplotlib的fonts/ttf文件夹,并显示如下
Font_manager模块主要设计了三个类:1)FontEntry:FontEntry主要用于matplotlib平台的管理,存储可用的字体属性,我们可以用它来统一matplotlib的绘图字体,减少更多的字体
图中字体设置的重复性工作。2).FontManager:FontManager类提供字体管理功能。3).FontProperties是一般用户最常用的类,其使用方式与FontEntry类似。它定义了一个FontProperties实例,用于设置文本对象的所有属性,并且可以重用。在创建文本时不需要一个接一个地设置它们。
对应Windows字体的名称,根据需要自行更改!
在matplotlib中,使用中文时,经常会出现一些乱码的问题,比如中文会变成小方格。有几种解决方案:方法1:修改配置文件matplotlibrc(不推荐)
结果:
例如,要逐步添加粗体:
在python脚本中动态设置matplotlibrc避免了更改配置文件的麻烦,并且方便灵活,例如:
由于字体已更改且不显示减号,因此在附录文件中将减号:true更改为false,这可以在代码中完成。
优点:在代码中直接指定中文字体文件,在出现中文的每个地方都指定fontproperties为刚刚设置的字体;
缺点:中文出现的每个地方,如标题,都指定一个字体,而不是每个地方,如图例,都提供指定字体的参数。
直接设置为中文时
也可以直接: