【亲测】Linux 使用 Matplotlib 显示中文

文章目录

  • 安装中文字体
  • 在Matplotlib中使用该字体来显示中文

在 Linux 系统中使用 Matplotlib 绘制图表时,如果需要显示中文,可能会遇到中文字符显示为方块或者乱码的问题。这是因为Matplotlib 默认使用的字体不支持中文。本文手把手带你解决这个问题。

安装中文字体

要在Linux系统中安装simhei.ttf(黑体字体文件),你可以按照以下步骤操作:

  1. 下载字体文件:首先,你需要获取simhei.ttf文件。如果手头没有这个文件,可以从一个可信的来源下载。

  2. 创建字体目录(如果你还没有合适的目录):
    如果你希望为当前用户安装字体,可以在主目录下创建一个.fonts目录(如果它还不存在的话)。对于系统级别的安装,则需要将字体文件放置在系统的字体目录中,比如/usr/share/fonts/

    • 对于个人使用:

      mkdir -p ~/.fonts
      
    • 对于系统范围内使用(可能需要管理员权限):

      sudo mkdir -p /usr/share/fonts/truetype/simhei
      
  3. 复制字体文件

    • 对于个人使用,将simhei.ttf文件复制到~/.fonts/目录下:

      cp path/to/simhei.ttf ~/.fonts/
      
    • 对于系统范围使用,将simhei.ttf文件复制到创建的系统字体目录中(例如/usr/share/fonts/truetype/simhei/),这可能需要管理员权限:

      sudo cp path/to/simhei.ttf /usr/share/fonts/truetype/simhei/
      

      请确保替换path/to/simhei.ttf为你实际的simhei.ttf文件路径。

  4. 更新字体缓存
    安装完字体后,需要更新系统的字体缓存以使新字体生效。

    • 对于个人使用的字体:

      fc-cache -f -v ~/.fonts/
      
    • 对于系统范围的字体安装:

      sudo fc-cache -f -v
      
  5. 验证安装
    你可以通过列出所有已安装的中文支持字体来检查simhei是否已经成功安装并被识别:

    fc-list :lang=zh
    

    在输出列表中寻找包含“SimHei”或“黑体”的行,确认字体已正确安装。

完成这些步骤之后,你的系统就安装了simhei.ttf字体,并且可以在应用程序如Matplotlib中使用该字体显示中文。记得在Matplotlib中设置正确的字体名称(如SimHei)以便利用这个新安装的字体。

在Matplotlib中使用该字体来显示中文

安装完simhei.ttf字体并确保系统已更新字体缓存后,你可以在Matplotlib中使用该字体来显示中文。以下是具体的步骤和示例代码:

  1. 确认字体名称:在Linux系统中安装新字体之后,建议先确认一下字体的确切名称。可以通过以下命令查看:

    fc-list :lang=zh -f "%{family}\n"
    

    在输出中找到类似“SimHei”或“黑体”的条目。注意字体名称的准确拼写(包括大小写)。

  2. 修改Matplotlib配置以使用新字体:你可以通过几种方式来指定Matplotlib使用SimHei字体显示中文。

    • 临时设置:在脚本中直接设置字体属性,这适用于仅想在特定图表中使用中文的情况。

      import matplotlib.pyplot as plt
      from matplotlib.font_manager import FontProperties# 如果你知道字体的确切名称,可以直接在这里设置
      font = FontProperties(fname="/usr/share/fonts/truetype/simhei/simhei.ttf")  # 根据实际路径调整plt.title('这是一个测试标题', fontproperties=font)  # 标题使用中文
      plt.xlabel('X轴标签', fontproperties=font)          # X轴标签使用中文
      plt.ylabel('Y轴标签', fontproperties=font)          # Y轴标签使用中文
      plt.rcParams['axes.unicode_minus'] = False         # 正常显示负号plt.plot([0, 1, 2], [0, 1, 4])
      plt.show()
      
    • 全局设置:如果你想对所有的图表都应用相同的字体设置,可以修改matplotlib的配置文件(matplotlibrc)或者直接在代码中设置默认字体属性。

      import matplotlib.pyplot as pltplt.rcParams['font.family'] = 'SimHei'  # 假设"SimHei"是你的字体名称,请根据实际情况替换
      plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题plt.title('这是一个测试标题')  # 现在应该能正常显示中文了
      plt.xlabel('X轴标签')
      plt.ylabel('Y轴标签')plt.plot([0, 1, 2], [0, 1, 4])
      plt.show()
      

请确保根据你之前确认的字体名称调整上述代码中的font.familyFontProperties参数。如果你按照前面提到的方法正确安装了字体,并且提供了正确的字体路径或名称,那么现在你应该能够在Matplotlib图表中正常显示中文文本了。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/76285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis Java 客户端 之 SpringDataRedis

SpringDataRedis SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis集成模块就叫做SpringDataRedis, 官方地址:https://spring.io/projects/spring-data-redis 特性: 提供了对不同Redis客户端…

数字化转型:重构生存逻辑,不止系统升级

数字化转型不过是升级系统,砸了钱、耗了力,却没达到预期,竞争力也没提升。实际上,数字化转型是对企业生存逻辑的彻~底重构,关乎商业模式、运营流程等方方面面。​ 很多企业觉得数字化转型是 IT 部门的事,只…

C语言队列的实现

目录 ​编辑 (一)队列的定义,初始化及创建结点 (二)入队和出队,以及取队头队尾的数据 (三)销毁队列 队列是指只允许在一端进行插入数据操作,在另⼀端进行删除数据操作的特殊线性表,队列具有先…

mapbox进阶,使用本地dem数据,加载hillshade山体阴影图层

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️hillshade 山体阴影图层 api1.3.1 ☘️…

量子纠错码实战:从Shor码到表面码

引言:量子纠错的必要性 量子比特的脆弱性导致其易受退相干和噪声影响,单量子门错误率通常在10⁻~10⁻量级。量子纠错码(QEC)通过冗余编码测量校正的机制,将逻辑量子比特的错误率降低到可容忍水平。本文从首个量子纠错…

10. git switch

基本概述 git switch是 Git 2.23 版本之后新增的命令&#xff0c;专门用于切换分支&#xff0c;目的是替代 git checkout 中与分支操作相关的功能&#xff0c;使命令语义更清晰、更安全。 基本用法 1.切换到已有分支 git switch <branch-name>常用选项 1.从当前分支…

LeetCode 热题 100 堆

215. 数组中的第K个最大元素 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 **k** 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最大的元素&#xff0c;而不是第 k 个不同的元素。 你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 …

PIXOR:基于LiDAR的3D检测模型解析

目录 1、前言 2、PIXOR介绍 2.1. 什么是PIXOR&#xff1f; 2.2. PIXOR如何工作&#xff1f; 3、表现和应用 3.1、PIXOR的性能表现 3.2、PIXOR的应用场景 3.3、PIXOR的局限性与挑战 4. PIXOR的未来展望 5. 结语 1、前言 自动驾驶技术正以前所未有的速度发展&#xff…

Vue中权限控制的方案

文章目录 源码&#xff1a;一、页面级1.1、路由守卫1.2、动态路由 二、按钮级别2.1、通过v-if来判断2.2、通过组件包裹的方式来判断2.3、通过自定义指令的方式 三、接口级别 源码&#xff1a; https://gitee.com/liu-qiang-yyds/sysPermission 一、页面级 1.1、路由守卫 前端…

【OSG学习笔记】Day 1: OSG初探——环境搭建与第一个3D窗口

什么是 OSG&#xff1f; 全称&#xff1a;OpenSceneGraph&#xff08;开源场景图&#xff09; 定位&#xff1a;一个基于 C/OpenGL 的高性能开源3D图形开发工具包&#xff0c;专注于实时渲染和复杂场景管理。 核心思想&#xff1a;通过 场景图&#xff08;Scene Graph&#xf…

Kubernetes 入门篇之网络插件 calico 部署与安装

在运行kubeadm init 和 join 命令部署好master和node节点后&#xff0c;kubectl get nodes 看到节点都是NotReady状态&#xff0c;这是因为没有安装CNI网络插件。 kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Not…

游戏开发中 C#、Python 和 C++ 的比较

&#x1f3ac; Verdure陌矣&#xff1a;个人主页 &#x1f389; 个人专栏: 《C/C》 | 《转载or娱乐》 &#x1f33e; 种完麦子往南走&#xff0c; 感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持&#xff01;❤️ 摘要&#xff1a; 那么哪种编程语言最适合游戏开发…

LabVIEW真空度监测与控制系统

开发了一种基于LabVIEW的真空度信号采集与管理系统&#xff0c;该系统通过图形化编程语言实现了真空度的高精度测量和控制。利用LabVIEW的强大功能&#xff0c;研制了相应的硬件并设计了完整的软件解决方案&#xff0c;以满足工业应用中对真空度监测的精确要求。 项目背景 随着…

checkra1n越狱出现的USB error -10问题解决

使用checkra1n进行越狱是出现&#xff1a; 解决办法(使用命令行进行越狱)&#xff1a; 1. cd /Applications/checkra1n.app/Contents/MacOS 2. ./checkra1n -cv 3. 先进入恢复模式 a .可使用爱思助手 b. 或者长按home,出现关机的滑条&#xff0c;同时按住home和电源键&#…

spring boot 中 WebClient 与 RestTemplate 的对比总结

以下是 WebClient 与 RestTemplate 的对比总结&#xff0c;以纯文本表格形式呈现&#xff1a; 核心特性对比 特性RestTemplateWebClient线程模型同步阻塞&#xff1a;每个请求占用线程&#xff0c;直到响应返回。异步非阻塞&#xff1a;基于事件循环&#xff0c;高效处理高并发…

深入浅出SPI通信协议与STM32实战应用(W25Q128驱动)(实战部分)

1. W25Q128简介 W25Q128 是Winbond推出的128M-bit&#xff08;16MB&#xff09;SPI接口Flash存储器&#xff0c;支持标准SPI、Dual-SPI和Quad-SPI模式。关键特性&#xff1a; 工作电压&#xff1a;2.7V~3.6V分页结构&#xff1a;256页/块&#xff0c;每块16KB&#xff0c;共1…

STM32 HAL库之EXTI示例代码

外部中断按键控制LED灯 在main.c中 HAL_Init(); 初始化Flash&#xff0c;中断优先级以及HAL_MspInit函数&#xff0c;也就是 stm32f1xx_hal.c 中 HAL_StatusTypeDef HAL_Init(void) {/* Configure Flash prefetch */ #if (PREFETCH_ENABLE ! 0) #if defined(STM32F101x6) || …

查看手机在线状态,保障设备安全运行

手机作为人们日常生活中不可或缺的工具&#xff0c;承载着沟通、工作、娱乐等多种功能。保障手机设备的安全运行是我们每个人都非常重要的任务&#xff0c;而了解手机的在线状态则是其中的一环。通过挖数据平台提供的在线查询工具&#xff0c;我们可以方便快捷地查询手机号的在…

Llama 4全面评测:官方数据亮眼,社区测试显不足之处

引言 2025年4月&#xff0c;Meta正式发布了全新的Llama 4系列模型&#xff0c;这标志着Llama生态系统进入了一个全新的时代。Llama 4不仅是Meta首个原生多模态模型&#xff0c;还采用了混合专家(MoE)架构&#xff0c;并提供了前所未有的上下文长度支持。本文将详细介绍Llama 4…

淘宝API驱动跨境选品:多语言详情页自动翻译与本地化定价

淘宝 API 驱动跨境选品实现多语言详情页自动翻译与本地化定价&#xff0c;为跨境电商业务带来诸多便利与优势&#xff0c;以下是详细介绍&#xff1a; 一、多语言详情页自动翻译 技术原理 借助淘宝的 API 接口&#xff0c;获取商品详情页的各类文本信息&#xff0c;包括标题、描…