首页 > 其他分享 >matplotlib 中的字体 fallback

matplotlib 中的字体 fallback

时间:2024-05-21 15:41:52浏览次数:24  
标签:默认 宋体 字体 matplotlib https fallback

matplotlib 的默认字体不支持中文。为了支持中文内容,我们可以选择将默认字体切换为中文字体,如宋体:

import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'SimSun'

但是,宋体的英文和数字字符不太美观。很多时候我们需要中文使用宋体、英文使用 Times New Roman 字体。在旧版的 matplotlib 中,字体是没有 fallback 功能的。matplotlib 确实可以定义一组默认字体,但在使用字体时,matplotlib 遵循以下规则:

  1. 从默认字体列表中选择第一个字体,查找系统中是否安装有该字体。
  2. 如果找到,则使用该字体。遇到该字体不包含的字符时,用框框代替,而不是选择下一个字体。
  3. 如果没找到,则查找默认字体列表中的第二个字体。

对中英字体混排的需求导致大量相关教程和博客的出现,这里有一些我找到的文章:

大致思想都是:默认字体用宋体,涉及字母和符号的部分,用 LaTeX 来写,因为 matplotlib 允许存在一个独立的 LaTeX 字体。只要我们将 LaTeX 字体设置为和 Times New Roman 类似的字体,并取消公式中默认的斜体样式,就可以获得以假乱真的效果。此外文 3 还提到可以用工具组合字体。

然而,matplotlib 从 3.6.0 版本开始支持 fallback 字体。这意味着当使用当前字体找不到对应的字符时,matplotlib 会自动到字体列表的下一个字体中查找字符。所以如果你的 matplotlib 版本 \(\geq\) 3.6.0,那么你可以用

import matplotlib.pyplot as plt
plt.rcParams['font.family'] = ['Times New Roman', 'SimSun']

来简单地完成中英文字体的混排。

一些有帮助的链接:

标签:默认,宋体,字体,matplotlib,https,fallback
From: https://www.cnblogs.com/eslzzyl/p/18204189

相关文章

  • Python数据分析numpy、pandas、matplotlib包
    Python数据分析numpy、pandas、matplotlib一、基础1.1notebook的一些配置快捷键:ctrl+enter执行单元格程序并且不跳转到下一行esc+L可以显示行号结果是打印的而没有返回任何的值就没有out1.2列表基础知识回顾b=[1,2.3,'a','b']b#列表中的元素允许各个元素不一样......
  • matplotlib
    展示图片--imshow主要参数:image可选的image可是:(M,N)具有标量数据的图像。使用归一化和颜色映射将值映射到颜色(M,N,3):具有RGB值(0-1浮点数或0-255整数)的图像。(M,N,4):具有RGBA值(0-1浮点数或0-255整数)的图像,即包括透明度。其他参数cmap:颜色设置常用的值......
  • python折线图包括设置横纵坐标字体大小刻度间隔等
    直径上代码#!usr/bin/envpython#-*-coding:utf-8-*-"""@author:Suyue@file:dryzhexian.py@time:2024/05/16@desc:"""importpandasaspdimportmatplotlibimportmatplotlib.pyplotaspltimportmatplotlib.tickerasticker......
  • mpdf增加字体并进行使用
     1、先将字体复制到目录:\vendor\mpdf\mpdf\ttfonts2、再修改文件\vendor\mpdf\mpdf\src\Config\FontVariables.php,对照已经添加的simsun,simkai,simhei,fangzhenweibei,fangzhenheiti等字体进行增加即可。3、再在需要设置字体的文字加上font-family:fangzhenweibei;样式即可。  ......
  • matplotlib中文乱码(linux中没有中文字体)
    在docker或linux中一劳永逸解决matplotlib中文显示问题安装mplfonts的安装方法是pip:$pipinstall-Umplfonts使用安装好mplfonts之后,需要有一个初始化的配置过程在终端执行$mplfontsinit即可。测试importmatplotlib.pyplotaspltfrommplfontsimportuse_font......
  • .net DataGirdView 通过列索引修改单元格字体
    场景是这样、我需要DataGirdView某几列数量大于0字体就变成蓝色,某几列超过标准值字体就变成红色具体列名属性voidInitCols(){varcol=_DataGridView.BuildCol<DataGridViewTextBoxColumn>(dgvDetail,"OrderNo","工单号");col.Width=125;......
  • vue+element-ui在表格中计算两数差值并让差值>20的字体显示为红色
    <el-table-columnprop="differential"label="差量"class-name="small-paddingfixed-width"><templateslot-scope="scope"><span:c......
  • 【图像处理】使用matplotlib库显示灰度图像为自定义颜色(2)
    在下面的代码中,facies_img的值只有[0,1,2]表明图像是灰度图像。通过下面的代码可以让图像显示为彩色图像importmatplotlib.pyplotaspltimportmatplotlib.colorsasmcolorsfromPILimportImageimportosimportrandomimportnumpyasnp#路径设置data_dir='data......
  • 小米红米手机应用APP字体太小
    小米红米手机应用APP字体太小 调整了手机显示大小,只能解决一点点,还是有点小,比如B站、微博。调整了系统字体大小,B站、微博又不受系统字体大小控制。 只能通过修改最小宽度来解决。1.打开开发者选项:设置→我的设备→全部参数与信息→连续点击"OS版本”,直到显示已进入开发者......
  • Matplot3D for JAVA 【V5.0】发布 :一个纯JAVA开发的数学科学数据可视化组件,JAVA 三维
    ​ Matplot3DforJAVA概述 在数据科学和工程领域,数据可视化是理解和交流复杂信息的关键工具。如果您是一位Java开发者,寻找一个强大的、本地化的三维图形绘图库,那么Matplot3DforJAVA(V5.0)值得你关注。该组件旨在为Java开发者提供类似于Python中Matplotlib的三维绘图功能,让Jav......