ubuntu 使用 Times New Roman 字体在 Matplotlib 中绘图并调整字体大小
ubuntu 使用 Times New Roman 字体在 Matplotlib 中绘图并调整字体大小
文章目录
- ubuntu 使用 Times New Roman 字体在 Matplotlib 中绘图并调整字体大小
- 1. 安装 Times New Roman 字体
- 验证字体是否安装成功
- 2. 在 Matplotlib 中加载 Times New Roman 字体
- 3. 在 Matplotlib 中使用 Times New Roman
- 示例:应用于标题和轴标签
- 4. 遇到的问题及解决方案
- **问题 1:findfont: Font family 'Times New Roman' not found**
- **问题 2:AttributeError: PathCollection.set() got an unexpected keyword argument 'fontproperties'**
- **问题 3:无法调整字体大小**
- 5. 使用全局字体设置
- 6. 调整字体大小和分辨率
- 总结
在数据可视化中,定制字体和样式是常见需求之一,特别是在需要与论文、报告或品牌设计保持一致时,使用特定字体如 Times New Roman 会显得尤为重要。然而,直接在
matplotlib 中设置自定义字体可能会遇到一些问题,比如字体无法加载、无法调整大小或参数冲突等。
1. 安装 Times New Roman 字体
在 Linux 系统上,Times New Roman 字体并不是默认安装的。因此,我们需要手动安装该字体。以下是在 Ubuntu 上安装 Times New Roman 字体的步骤:
sudo apt update
sudo apt install ttf-mscorefonts-installer
安装完成后,Times New Roman 字体通常会被存储在路径 /usr/share/fonts/truetype/msttcorefonts/ 中。
验证字体是否安装成功
使用以下命令检查字体是否正确安装:
fc-list | grep "Times New Roman"
输出示例:
/usr/share/fonts/truetype/msttcorefonts/Times_New_Roman.ttf: Times New Roman:style=Regular
2. 在 Matplotlib 中加载 Times New Roman 字体
为了在 Matplotlib 中使用 Times New Roman 字体,我们需要通过 matplotlib.font_manager 加载字体文件。以下是加载字体的完整代码:
from matplotlib import font_manager as fm# 加载 Times New Roman 字体
font_path = "/usr/share/fonts/truetype/msttcorefonts/Times_New_Roman.ttf"
times_new_roman_font = fm.FontProperties(fname=font_path)# 检查字体是否加载成功
print("Loaded font name:", times_new_roman_font.get_name())
如果输出为 Times New Roman,说明字体加载成功。
3. 在 Matplotlib 中使用 Times New Roman
示例:应用于标题和轴标签
我们可以通过 fontproperties 参数将字体应用于标题、轴标签等文本元素。例如:
import matplotlib.pyplot as plt# 示例数据
x = [1, 2, 3]
y = [4, 5, 6]# 创建绘图
plt.figure(figsize=(6, 6))
plt.plot(x, y, label="Sample Line")# 应用字体到标题和轴标签
plt.title("Title in Times New Roman", fontproperties=times_new_roman_font, fontsize=20)
plt.xlabel("X-axis", fontproperties=times_new_roman_font, fontsize=15)
plt.ylabel("Y-axis", fontproperties=times_new_roman_font, fontsize=15)# 图例
plt.legend(prop=times_new_roman_font, loc='upper left')
plt.show()
4. 遇到的问题及解决方案
问题 1:findfont: Font family ‘Times New Roman’ not found
在某些情况下,即使正确安装了字体,Matplotlib 仍可能无法识别字体,报错类似:
findfont: Font family 'Times New Roman' not found
解决方法:
- 确保字体路径正确。
- 刷新字体缓存:
fc-cache -fv - 删除 Matplotlib 的字体缓存:
rm -rf ~/.cache/matplotlib
问题 2:AttributeError: PathCollection.set() got an unexpected keyword argument ‘fontproperties’
如果尝试在 plt.scatter() 中使用 fontproperties 参数,会报错类似:
AttributeError: PathCollection.set() got an unexpected keyword argument 'fontproperties'
原因:
fontproperties 参数并不适用于 scatter 函数,而是用于设置文本(如标题、图例)的字体。
解决方法:
将字体设置移到 plt.legend() 或其他支持 fontproperties 的函数中。修改后的代码如下:
plt.scatter(x, y, label="Scatter Example", alpha=0.5)
plt.legend(prop=times_new_roman_font)
问题 3:无法调整字体大小
在 plt.legend() 中同时使用 fontsize 和 prop 参数时,可能会导致字体大小无法调整的问题。
原因:
fontsize 参数与 prop 参数冲突,当使用 prop=FontProperties 时,字体大小应该在 FontProperties 中指定。
解决方法:
通过 FontProperties 设置字体大小,而不是直接使用 fontsize 参数。例如:
# 设置字体大小
times_new_roman_font = fm.FontProperties(fname=font_path, size=20)# 应用到图例
plt.legend(loc='lower left', prop=times_new_roman_font)
5. 使用全局字体设置
如果希望将 Times New Roman 设置为整个图形的默认字体,可以通过 Matplotlib 的 rcParams 实现:
from matplotlib import rcParams# 设置全局字体
rcParams['font.family'] = times_new_roman_font.get_name()
rcParams['font.size'] = 12# 创建绘图
plt.plot([1, 2, 3], [4, 5, 6], label="Example Line")
plt.legend(loc='upper left')
plt.title("Global Font Example")
plt.show()
6. 调整字体大小和分辨率
当字体太大或太小时,可以通过以下方法调整:
- 调整字体大小:通过
FontProperties的size参数控制字体大小。 - 调整图像分辨率:通过设置 DPI(每英寸像素点)改善显示效果。例如:
plt.figure(dpi=100) # 默认是 100,可以增加到 200 或更高
总结
通过本文的介绍,我们实现了以下目标:
- 在 Ubuntu 系统中安装并验证 Times New Roman 字体。
- 成功在 Matplotlib 中加载 Times New Roman 字体,并应用于标题、轴标签和图例。
- 解决了字体无法加载、
fontproperties参数冲突等常见问题。 - 学会通过
FontProperties控制字体大小,并全局应用字体设置。
最终效果展示(示例代码):
import matplotlib.pyplot as plt
from matplotlib import font_manager as fm# 加载字体
font_path = "/usr/share/fonts/truetype/msttcorefonts/Times_New_Roman.ttf"
times_new_roman_font = fm.FontProperties(fname=font_path, size=20)# 绘图
plt.figure(dpi=100)
plt.plot([1, 2, 3], [4, 5, 6], label="Sample Line")
plt.title("Final Example", fontproperties=times_new_roman_font)
plt.xlabel("X-axis", fontproperties=times_new_roman_font)
plt.ylabel("Y-axis", fontproperties=times_new_roman_font)
plt.legend(loc='upper left', prop=times_new_roman_font)
plt.show()
相关文章:
ubuntu 使用 Times New Roman 字体在 Matplotlib 中绘图并调整字体大小
ubuntu 使用 Times New Roman 字体在 Matplotlib 中绘图并调整字体大小 文章目录 ubuntu 使用 Times New Roman 字体在 Matplotlib 中绘图并调整字体大小1. 安装 Times New Roman 字体验证字体是否安装成功 2. 在 Matplotlib 中加载 Times New Roman 字体3. 在 Matplotlib 中使…...
openGauss开源数据库实战二十三
文章目录 任务二十三 openGauss 参数管理任务目标实施步骤一、启动参数文件及参数类型1.参数值修改后必须重新启动数据库的参数2.参数值修改后只需要reload操作的参数 二、设置数据库级参数三、设置用户级参数四、设置会话级参数五、将参数设置为默认值 任务二十三 openGauss 参…...
MySQL 复合查询(重点)
个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 MySQL 复合查询(重点) 收录于专栏[MySQL] 本专栏旨在分享学习MySQL的一点学习笔记,欢迎大家在评论区交流讨论💌 …...
ASP.NET |日常开发中连接Oracle数据库详解
ASP.NET |日常开发中连接Oracle数据库详解 前言一、安装和配置 Oracle 数据访问组件1.1 安装ODP.NET(Oracle Data Provider for.NET):1.2 引用相关程序集: 二、配置连接字符串2.1 连接字符串的基本组成部分:…...
java_连接数据库的方法_后端处理_前端调用_打通整体思路
参考:14 尚上优选项目-平台管理端-权限管理模块-开发角色管理接口(上)_哔哩哔哩_bilibili 第一步. 定义数据 在数据库中定义好数据(如role表格),在java后端定义好对应的实体类(Role类…...
网络安全知识点
第一章 网络安全概述 1.2.1 网络安全概念P4 网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。 1.2.3 网络安全的种类P5 (1…...
pyfink1.20版本下实现消费kafka中数据并实时计算
1、环境 JDK版本:1.8.0_412python版本:3.10.6apache-flink版本:1.20.0flink版本:1.20kafka版本:kafka_2.12-3.1.1flink-sql-connector-kafka版本:3.3.0-1.202、执行python-flink脚本 从kafka的demo获取消…...
国产Tomcat东方通(TongWeb):Linux系统部署全攻略
国产Tomcat东方通(TongWeb):Linux系统部署全攻略 国产tomcat东方通tongweb在linux系统上部署全流程 [这里是图片001] 项目地址: https://gitcode.com/Resource-Bundle-Collection/fca68 项目介绍 在当前的软件开发和运维环境中,…...
bilstm -crf 的torch官方的教程 不支持 batchsize 。。。。有更效率更高的方案吗
根据您的需求,您正在寻找一个支持批量处理(batch size)的BiLSTM-CRF模型的PyTorch教程。以下是一些资源,它们提供了更高效的解决方案,包括批量处理的支持: 1. **a-PyTorch-Tutorial-to-Sequence-Labeling*…...
Python面试常见问题及答案6
一、基础部分 问题1: 在Python中,如何将字符串转换为整数?如果字符串不是合法的数字字符串会怎样? 答案: 在Python中,可以使用int()函数将字符串转换为整数。如果字符串是合法的数字字符串,转换…...
代码随想录算法训练营第三天 | 链表理论基础 | 203.移除链表元素
感觉上是可以轻松完成的,因为对链接的结构,元素的删除过程心里明镜似的 实际上四处跑气 结构体的初始化好像完全忘掉了,用malloc折腾半天,忘记了用new,真想扇自己嘴巴子到飞起删除后写一个函数,把链表打印…...
1. 机器学习基本知识(5)——练习题(1)
1.7 🐦🔥练习题(本章重点回顾与总结) 0.回答格式约定: 对于书本内容的回答,将优先寻找书本内容作为答案进行回答。 书本内容回答完毕后,将对问题进行补充回答,上面分割线作为两个…...
vue 自定义组件image 和 input
本章主要是介绍自定义的组件:WInput:这是一个验证码输入框,自动校验,输入完成回调等;WImage:这是一个图片展示组件,集成了缩放,移动等操作。 目录 一、安装 二、引入组件 三、使用…...
系列3:基于Centos-8.6 Kubernetes使用nfs挂载pod的应用日志文件
每日禅语 古代,一位官员被革职遣返,心中苦闷无处排解,便来到一位禅师的法堂。禅师静静地听完了此人的倾诉,将他带入自己的禅房之中。禅师指着桌上的一瓶水,微笑着对官员说:“你看这瓶水,它已经…...
Jfinal项目整合Redis
1、引入相关依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --> <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version> </dependency><depen…...
在Ubuntu服务器上备份文件到自己的百度网盘
文章目录 概述安装bypy同步文件定时任务脚本 概述 之前自购了一台阿里云服务器,系统镜像为Ubuntu 22.04, 并且搭建了LNMP开发环境(可以参考:《Ubuntu搭建PHP开发环境操作步骤(保姆级教程)》)。由于项目运行中会产生附…...
Unity 模板测试透视效果(URP)
可以实现笼中窥梦和PicoVR中通过VST局部透视效果。 使用到的Shader: Shader "Unlit/StencilShader" {Properties{[IntRange]_Index("Stencil Index",Range(0,255))0}SubShader{Tags{"RenderType""Opaque""Queue""Geo…...
《计算机视觉证书:开启职业发展新航道》
一、引言 在当今科技飞速发展的时代,计算机视觉技术正以惊人的速度改变着我们的生活和工作方式。从智能手机的人脸识别解锁到自动驾驶汽车的环境感知,计算机视觉技术的应用无处不在。而计算机视觉证书作为这一领域的专业认证,其作用愈发凸显…...
.NET6 WebApi第1讲:VSCode开发.NET项目、区别.NET5框架【两个框架启动流程详解】
一、使用VSCode开发.NET项目 1、创建文件夹,使用VSCode打开 2、安装扩展工具 1>C# 2>安装NuGet包管理工具,外部dll包依靠它来加载 法1》:NuGet Gallery,注意要启动科学的工具 法2》NuGet Package Manager GUl,…...
Git-分布式版本控制工具
目录 1. 概述 1. 1集中式版本控制工具 1.2分布式版本控制工具 2.Git 2.1 git 工作流程 1. 概述 在开发活动中,我们经常会遇到以下几个场景:备份、代码回滚、协同开发、追溯问题代码编写人和编写时间(追责)等。备份的话是为了…...
【ElevenLabs马来文语音实战指南】:20年AI语音工程师亲授7大避坑要点与本地化发音调优秘技
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs马来文语音技术全景概览 ElevenLabs 作为全球领先的文本转语音(TTS)平台,近年来持续扩展其多语言支持能力,其中马来文(Bahasa Mela…...
大模型岗位锐评:小白程序员转型指南 学习资源包免费领!收藏必备
本文深度剖析大模型领域的五大梯队岗位,从底层架构工程师到应用开发工程师,详细介绍了各岗位的日常工作、新手友好度、优势与避雷点。文章强调大模型领域人才缺口巨大,传统程序员具备转型优势,并提供了系统学习路线及实战资源&…...
如何高效使用League Akari:提升英雄联盟体验的5个实用功能指南
如何高效使用League Akari:提升英雄联盟体验的5个实用功能指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款…...
免费压缩包密码恢复工具:ArchivePasswordTestTool终极指南
免费压缩包密码恢复工具:ArchivePasswordTestTool终极指南 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾经因为忘记压…...
CANN/asc-devkit SIMT fmodf函数
fmodf 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/cann…...
AI 写的鸿蒙 ArkTS 代码能跑?我测了 37 个案例,翻车率 60%
先扔结论:如果你现在把 Claude 或 Cursor 当成 ArkTS 专家来用,大概率会掉坑里。我上周闲得慌,跑了 37 个常见开发场景的测试,结果 AI 生成的代码能直接编译通过的,不到四成。剩下的要么语法错误,要么用了废…...
2026年做了一个大胆的决定:我要收徒弟了!
如果你已经在测试/开发领域摸爬滚打几年,一定有过这样的困惑:• 报了很多课,学了很多工具/框架/技术,但遇到真实项目问题依然无从下手• 想转型测开/管理/AI测试,却不知道自己的短板到底在哪• 职场遇到瓶颈࿰…...
如何提升区域科技创新服务效率与资源整合能力?
观点作者:科易网-国家科技成果转化(厦门)示范基地现状概述:区域科技创新服务的成效与短板 在数智化转型加速的背景下,区域科技创新服务体系正经历深刻变革。以数据为核心的生产要素重塑了创新生态,科技成果…...
对比直接使用官方API,通过Taotoken接入在成本控制上的实际感受
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用官方API,通过Taotoken接入在成本控制上的实际感受 1. 引言:从单一渠道到聚合平台 对于个人开…...
【AI】关于claude code长会话过程中逐渐遗忘给它提供的标准操作规范问题思考
问题 在使用claude code的时候,我发现,我提供了一系列的操作规范,比如代码编译,容器创建,资源初始化等标准化的操作规范,我让它按照规范执行操作。会话前期,它会严格执行,但是会话长…...
