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

news/2024/11/28 9:44:54/

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 挂起等待锁…