python Matplotlib绘图实现:中文宋体,英文新罗马(科研人必备);解决Font family [‘sans-serif‘] not found.

news/2024/7/24 13:56:50/

1、合并字体

将电脑自带的宋体和Times New Roman字体合并为新字体,我命名为SongNTR.ttf
https://github.com/nowar-fonts/Warcraft-Font-Merger(上述网站可以合并字体)
合并后字体

2、将合并后的字体放置到matplotlib字体文件夹中

文件夹路径通过以下方式可以获得:

import matplotlib.pyplot as plt
import numpy as np
import matplotlibprint(matplotlib.matplotlib_fname())

输出路径:

c:\users\dell\appdata\local\programs\python\python38\lib\site-packages\matplotlib\mpl-data\matplotlibrc

在这里插入图片描述

3、修改matplotlibrc文件

文件位于 C:\Users\dell\AppData\Local\Programs\Python\Python38\Lib\site-packages\matplotlib\mpl-data
打开后修改257行和265行,其中257行去掉注释,265行去掉注释并添加字体 SongNTR

font.family:  sans-serif
#font.style:   normal
#font.variant: normal
#font.weight:  normal
#font.stretch: normal
#font.size:    10.0#font.serif:      DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
font.sans-serif: SongNTR, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
#font.cursive:    Apple Chancery, Textile, Zapf Chancery, Sand, Script MT, Felipa, Comic Neue, Comic Sans MS, cursive
#font.fantasy:    Chicago, Charcoal, Impact, Western, Humor Sans, xkcd, fantasy

在这里插入图片描述

4、修改.matplotlib缓存文件 fontlist-v330.json

位于 C:\Users\dell.matplotlib
打开后插入以下内容:

{"fname": "fonts\\ttf\\SongNTR.ttf","name": "SongNTR","style": "normal","variant": "normal","weight": 700,"stretch": "normal","size": "scalable","__class__": "FontEntry"},

fontlist-v330.json文件

4、重启python

5、测试

设置字体,实现中文:宋体,英文:Times New Roman

plt.rcParams['font.sans-serif'] = ['SongNTR'] ##设置字体

中文:宋体,英文:Times New Roman

参考:添加链接描述
添加链接描述


http://www.ppmy.cn/news/46332.html

相关文章

CF55D-Beautiful numbers (数位dp)

l c m ( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ) 2520 lcm(1,2,3,4,5,6,7,8,9)2520 lcm(1,2,3,4,5,6,7,8,9)2520 若 x x x 能被它自己的所有非零位的数字整除,即能被它们的最小公倍数整除, x ≡ 0 ( m o d l c m ( { d i g i t [ i ] } ) ) x \equiv 0…

前端Vue.js项目开发,不重启项目,快速切换后台地址---使用nginx负载简单快速实现更换后台代理地址

前端Vue.js项目开发,不重启项目,快速切换后台地址—使用nginx负载简单快速实现更换后台代理地址 本文实现了在vue项目不重启的情况下,快速实现更换联调后台服务器的方法, 能够大大节省vue项目重启时间 chen 2023-04-20 文档源码地址,最新版本会在这里修改…

GIS空间数据格式简介

Gis数据存储 零、前言一、基础概念二、矢量数据1、定义2、基础3、WBT/WKB4、坐标系5、Geometry6、要素 / 要素集7、存储格式8、图层 三、栅格数据1、定义2、基础3、存储格式 零、前言 1、首先该篇文档主要是针对刚入坑的朋友,如果你对gis的存储结构谙熟于心&#x…

【逗号你真的懂吗?】C++与JAVA中逗号的区别

文章目录 一、先上结论二、C中的逗号逗号运算符和逗号表达式 三、JAVA中的逗号四、实战验证情况一:在定义(或声明)变量时利用逗号CJAVA 情况二:在for循环条件中使用逗号CJAVA 情况三:在函数形参参数列表中使用逗号CJAV…

centos7.9系统部署NFS详细流程—2023.04

文章目录 NFS与RPC关系前提关闭防火墙和selinux安装 NFS 和 RPC测试取消挂载 NFS与RPC关系 简单点可以这么理解,RPC和NFS的关系:NFS是一个文件系统,而RPC是负责负责信息的传输。 NFS(Network File System)即网络文件…

EasyCVR平台基于GB28181协议的语音对讲配置操作

EasyCVR基于云边端协同,具有强大的数据接入、处理及分发能力,平台可支持海量视频的轻量化接入与汇聚管理,可提供视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联等功能…

C++中使用命名空间时的注意事项

C中的命名空间是一种将全局作用域分割成更小的区域的机制,可以用于避免名称冲突和提高代码的可读性。在C中,命名空间可以包含变量、函数、类和结构体等类型,可以在头文件中使用命名空间来组织代码。但是,在头文件中使用命名空间时…

线程安全的锁策略,你到底忽略了多少?

线程安全的锁策略,你到底忽略了多少? 文章目录 线程安全的锁策略,你到底忽略了多少?一,🔰乐观锁vs悲观锁二,📍轻量级锁 vs 重量级锁三,📍自旋锁 vs 挂起等待锁…

基因家族分析及SCI写作技巧

详情点击链接:基因家族分析及SCI写作技巧 一,文献研读和方法​ 1.基因家族分析文献; 2.基因组学分析技巧; 3.生物信息大数据分析二,基因家族注释文件​​​​​​​ 1.候选基因下载方式; 2.文件解读&a…

为什么老年人会经常性出现吃饭呛咳的情况 什么因素导致的

其实很多老年人在吃饭或是喝水的时候,都存在吞咽困难的问题,呛咳或者是忘了如何下咽。其实在老年人群体当中,这也是一种较为常见的现象,但是很多人都把这种现象当回事。 对于呛咳的现象是很好判断的,在家里老人喝水或是…

linux安装rabbitMq

一、安装Erlang 1、下载Erlang Erlang和RabbitMQ版本对照:RabbitMQ Erlang Version Requirements — RabbitMQ 下载地址:https://packagecloud.io/rabbitmq/erlang/packages/el/7 2、安装 Erlang 首先将下载好的文件上传到服务器,创建一…

Linux做代理服务器实现步骤

Linux做代理服务器 最简单的做法,用RedHat9.0为例 找一台能装上Linux的机器最少要有两块网卡 1.安装Linux,不管是在图形,还是文体下都可以,选择最小安装,在安装的时候可以先配置一下外网的IP和DNS(不设也行)&#xf…

GPT-3.5还没研究明白,GPT-4又来了,chatGPT会进化成什么样?

基于GPT-3.5的chatGPT热度才稍稍减退没多久,GPT-4又来了,文新一言的发布会也槽点满满,差距似乎越来越大了。 chatGPT到底厉害在哪?为什么突然就爆火了呢? 它的爆火,一方面,和它的出现形态有关…

LeetCode刷题集(二)(LeetCode 2037使每位学生都有座位的最少移动次数)

学习目标: 掌握LeetCode2037使每位学生都有座位的最少移动次数 题目内容: 一个房间里有 n 个座位和 n 名学生,房间用一个数轴表示。给你一个长度为 n 的数组 seats ,其中 seats[i] 是第 i 个座位的位置。同时给你一个长度为 n 的数…

在vue中如何使用nextTick ?nextTick 的原理是什么?

Vue.js 是一个流行的前端框架,它提供了一种响应式的数据绑定机制,使得页面的数据与页面的 UI 组件之间能够自动同步。Vue.js 中的数据驱动模型可以让开发者专注于业务逻辑,而不用过多地关注页面 DOM 操作的细节。然而,在某些情况下…

【hello Linux】进程概念(下)

目录 1. 通过系统调用创建进程—fork 1.1 通过fork创建进程: 1.2 如何不退出 vim 直接执行命令呢? 3. fork创建进程的本质 4. 父子进程的分流: 2. 进程状态 3. 信号 3.1 显示全部信号 3.1 停止进程 3.2 继续进程 3.3 杀死进程 后台进程 4. 僵…

为什么FTP会随着时间的过去而变慢?

有人问:我在XP上有FZ客户端3.5.3,在Vista上有0.9.41服务器。通过已经很慢的连接传输大文件时,我注意到速度开始时约为40kb / s,但逐渐趋于稳定,约为20kb / s,并保持这种状态。如果我退出客户端并重新启动它…

批处理脚本用法总结

目录 一、常用命令二、基本语法1. rem 和 ::2. echo 和 3. pause4. errorlevel5. title6. color7. goto 和 :8. find9. start10. assoc 和 ftype11. pushd 和 popd12. call13. if 三、常用特殊符号1. 2. %3. >4. >> 四、常见用法1. 设置临时环境变量2. 启动CMD执行命令…

systemctl 命令设置开机自启动失败

1.案例现象 我在 3 月 31日的时候发表了一篇《shell 脚本之一键部署安装 Nginx 》,介绍了如何通过 shell 脚本一键安装 Nginx 我脚本中执行了 Nginx 开机自启动的命令,当我使用 systemctl status nginx 命令复核的时候,我发现 Nginx 服务设…

redis学习

Redis 1.安装 vi /etc/sysconfig/network-scripts/ifcfg-ens33 #修改网络安装gcc依赖 yum install -y gcc tclcd redis-6.2.11 make && make installcp redis.conf.bck redis.conf #修改redis.conf bind 0.0.0.0 daemonize yes requirepass 123456cd /usr/local/src…