matplotlib打印样式中的字体属性由FontManager类管理,并由FontProperties类指定。

为了获取这些字体属性,matplotlib在内部使用FontManager类的一个实例来调用一个findfont()函数,该函数搜索字体并返回本地或系统字体路径中与FontProperties实例中的字体规范相匹配的最佳TrueType(TTF)字体文件。规范中的默认后备字体是DejaVu Sans。字体系列可以设置为以下参数之一:“serif”、“sans-serif”、“cursive”、“fantasy”或“monospace”。可以找到以下任何字体系列的TTF文件位置:In [1]: from matplotlib.font_manager import findfont, FontProperties

In [2]: font = findfont(FontProperties(family=['sans-serif']))

In [3]: font

Out[3]: 'C:\\Users\\xxxxxx\\Anaconda3\\envs\\py3.7.4\\lib\\site-packages\\matplotlib\\mpl-data\\fonts\\ttf\\DejaVuSans.ttf'

“单空间”族的另一个例子:

^{pr2}$

如您所见,上面的sans-serif系列指向默认的DejaVuSans TTF文件,因为我还没有将FONTNAME设置为同样属于sans-serif系列的“Lato”字体。在

在更改FONTNAME之前,首先了解字体搜索是如何进行的很重要。

现在字体搜索是一项昂贵的任务,为了使后续请求更有效,字体信息缓存在一个JSON文件中。您可以在source code中找到FontManager类的证据。对于Windows,此文件位于:%userprofile%\.matplotlib。有关详细信息,请参阅FontManager类文档的“注释”部分:This performs a nearest neighbor search. Each font is given a

similarity score to the target font properties. The first font with

the highest score is returned. If no matches below a certain threshold

are found, the default font (usually DejaVu Sans) is returned.

The result is cached, so subsequent lookups don't have to perform the

O(n) nearest neighbor search.

在我的电脑(Windows10)上,我有两个缓存文件:fontlist-v300&fontlist-v310。如果检查这些文件的内容,则会显示字体列表及其属性,例如TTF文件位置、样式、权重等。请注意默认的族键:"defaultFamily": {

"ttf": "DejaVu Sans",

"afm": "Helvetica"

}

现在,我们知道字体将以DejaVu Sans显示。这在情节的标题中最为明显:In [1]: import matplotlib as mpl

...: mpl.rcParams['font.family'] = 'sans-serif'

...: import matplotlib.pyplot as plt

...: plt.plot(range(0,50,10))

...: plt.title('Font test', size=32)

...: plt.show()

绘图(默认字体):

findfont()函数将始终查找缓存文件(如果不存在则创建一个),如果我在计算机上安装了新字体,则必须更新此缓存文件,否则它将继续显示备用字体(与默认值相同)。在继续下一步之前,请确保Lato字体是installed correctly。字体应该在“控制面板”的“字体”下可用。在

现在正确安装了Lato字体,删除缓存文件并将sans-serif字体设置为Lato:In [4]: import matplotlib as mpl^M

...: mpl.rcParams['font.family'] = 'sans-serif'

...: mpl.rcParams['font.sans-serif'] = 'Lato'

...: import matplotlib.pyplot as plt

...: plt.plot(range(0,50,10))

...: plt.title('Font test', size=32)

...: plt.show()

绘图(无衬线字体):

您还将看到一个新的缓存文件已经创建。上面的代码片段重新构建了缓存文件,该文件现在也包含了Lato字体的信息。同样,您可以在文本编辑器中打开这个缓存文件来验证它的存在。现在让我们验证sans-serif系列的TTF文件路径:In [4]: from matplotlib.font_manager import findfont, FontProperties

In [5]: font = findfont(FontProperties(family=['sans-serif']))

In [6]: font

Out[6]: 'C:\\Users\\xxxxx\\AppData\\Local\\Microsoft\\Windows\\Fonts\\Lato-Thin.ttf'

如您所见,sans-serif系列现在指向Lato-Thin TTF文件。在

将字体样式更改为斜体还需要先删除缓存文件:In [3]: In [4]: import matplotlib as mpl

...: ...: mpl.rcParams['font.family'] = 'sans-serif'

...: ...: mpl.rcParams['font.sans-serif'] = 'Lato'

...: ...: mpl.rcParams['font.style'] = 'italic'

...: ...: import matplotlib.pyplot as plt

...: ...: plt.plot(range(0,50,10))

...: ...: plt.title('Font test', size=32)

...: ...: plt.show()

In [4]: from matplotlib.font_manager import findfont, FontProperties

In [5]: font = findfont(FontProperties(family=['sans-serif']))

In [6]: font

Out[6]: 'C:\\Users\\xxxxxx\\AppData\\Local\\Microsoft\\Windows\\Fonts\\Lato-HairlineItalic.ttf'

绘图:

注意:所有步骤都是在IPython控制台上执行的,可能需要重新启动IPython会话才能使更改生效。在

python怎样定义font_无法在matplotlib中使用自定义字体相关推荐

  1. python多边形图案_如何用matplotlib中的自定义图案填充多边形?

    您可以子类matplotlib.hatch.Shapes,并根据在unit square[[-0.5,0.5]x[-0.5,0.5]]内绘制的任何引用路径定义自定义图案填充.在 暂定:import n ...

  2. 在matplotlib中设置中文字体

    在matplotlib中设置中文字体 matplotlib库中默认使用的字体是不支持中文的,所以如果需要中文的标签或标题则我们手动去重新设置一个支持中文格式的字体.因为之前我在设置的时候犯了一个很蠢的 ...

  3. android studio 自定义字体,Android Studio中的自定义字体

    如何在android studio中创建自定义字体? 我试图使用自定义字体,我读过,我想将字体放在资产/字体. 我已经搜索了很长时间,但很难找到帮助. 我哪里错了?我真的不知道该怎么做. 我写下了所有 ...

  4. android 使用 系统字体,Android_解析Android中使用自定义字体的实现方法,1、Android系统默认支持三种字 - phpStudy...

    解析Android中使用自定义字体的实现方法 1.Android系统默认支持三种字体,分别为:"sans", "serif", "monospace ...

  5. 在iPhone App中使用自定义字体

    如何在iPhone程序中使用自定义字体?比如要添加方正兰亭字体,首先需要一个ttf的字体库.到一些字体库的网站上去下载吧 然后把这个文件添加到工程里面  在plist里面添加 添加成功后,就可以使用啦 ...

  6. flutter中使用自定义字体(fontFamily)

    flutter中使用自定义字体(fontFamily) 首先下载一下测试用的字体,我用是在谷歌下载的,Dancing_Script 字体 为了便于大家使用,我将字体文件上传到了CSDN上,可以免费下载 ...

  7. python怎么显示汉字_mac在matplotlib中显示中文的操作方法

    Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 . 通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方 ...

  8. 用python绘制熊猫图案_在matplotlib中绘制熊猫日期

    我有一个固定宽度的数据文件,其中包含日期,但当我试图绘制数据时,日期没有正确地显示在x轴上. 我的文件看起来像2014-07-10 11:49:14.377102 45 2014-07-10 11:5 ...

  9. python不能保存中文_Python 关于matplotlib无法显示中文字体的解决方法

    #### 以下面的例子说明如何解决matplotlib画图中出现中文字体无法显示问题 要画出10-12点气温变化的图像 ``` from matplotlib import pyplot as plt ...

  10. matplotlib中导入中文字体

    首先查看自己的ubuntu库中是否自带中文包: (1) fc-list :lang=zh 如果其中有中文,则默认含有中文包 (2)如果不含有中文包的话-----安装中文包,一般不建议安装,可以从win ...

最新文章

  1. 自监督学习(Self-Supervised Learning)多篇论文解读(下)
  2. 第七课.Logistic回归算法
  3. 浮点数的运算为什么更慢
  4. public private protected
  5. ATT汇编leave指令
  6. oracle索引对模糊查询,Oracle索引
  7. Material Designer的低版本兼容实现(一)—— 简介 目录
  8. Redis工具类封装讲解和实战
  9. MySQL流浪记(六)—— CONCAT到GROUP_CONCAT的沿途风景(图文详解)
  10. JspWriter 与 printwriter区别
  11. https的ssl证书申请及服务器的nginx的配置教程
  12. md文档转换为HTML文件
  13. 媒体连接(2)...
  14. 资深工程师PCB经验介绍
  15. 苹果三代耳机_【团品2】1.苹果原装数据线以及有线耳机 2.苹果蓝牙耳机
  16. Gitlab集成Sonarqube实现自动检测代码并发送报告给提交者
  17. AutoResetEvent 与 ManualResetEvent区别
  18. Kafka 核心原理(贼全面)
  19. 第三讲 外国古代密码艺术
  20. 正则表达式实践(看完就会)

热门文章

  1. 《Word 排版艺术》一书的人到此交流
  2. 辽宁省沈阳市谷歌高清卫星地图下载
  3. SQL prompt无法激活跳转到127.0.0.1:22223的解决方案
  4. 计算机c盘坏了,电脑c盘损坏,怎样修复?
  5. 安徽二本大学计算机排名,2018安徽大学排名 安徽有哪些大学
  6. 彩虹易支付源码v8.1.1-支持多通道轮训/API退款/实名认证/完善手动提现t0t1
  7. 数学建模姜启源5.1人口增长——学习记录
  8. 《数字图像处理》--冈萨雷斯(第十章)
  9. SQL Server数据库 - 安装教程
  10. 防火墙限制TCP流量新方法