【linux】解决matplotlib中文显示乱码

一、Debian操作系统版本号

$ cat /etc/debian_version
12.4

二、问题

matplotlib中文显示乱码。

三、解决方法:

plt.rcParams["font.sans-serif"] = "Noto Sans CJK JP"

四、解决过程

1.问GPT

回答了一些相关问题,但是好像用处不大。

截至我的知识更新日期(2023年),Debian 12(被称为“Bookworm”)尚未正式发布。不过,安装中文字库的步骤在Debian GNU/Linux发行版之间通常是相似的。以下是在Debian系统上安装中文字体的通用步骤:

1. 打开一个终端窗口。

2. 首先,你需要更新你的软件包索引:

sudo apt update

3. 安装常见的中文字体包。

    你可以选择安装各种字体包,以下是一些例子:

    - fonts-wqy-zenhei — 文泉驿正黑字体。
    - fonts-wqy-microhei — 文泉驿微米黑字体。
    - xfonts-wqy — 文泉驿点阵字体。
    - fonts-arphic-ukai — 文鼎PL简双宋字体。

    - fonts-arphic-uming — 文鼎PL简明字体。

    要安装它们,执行命令:

sudo apt install fonts-wqy-zenhei fonts-wqy-microhei xfonts-wqy fonts-arphic-ukai fonts-arphic-uming

4. 安装完成后,你可能需要重新构建字体缓存:

sudo fc-cache -fv

5. 安装后,新字体就应该能够使用了,你可能需要重启一下你的应用软件或者整个会话(注销然后重新登录),以便应用程序能够识别新安装的字体。

根据你的需求,你还可能想要安装其它特定的中文字体包,可以通过包管理器搜索可用的字体包:

apt search chinese | grep fonts

或者更直接地搜索“fonts”来得到更多关于字体的软件包:

apt search fonts

请注意,当Debian 12正式发布后,可能会有更多的字体包可用,甚至步骤也可能略有不同,所以当Debian 12正式面世后,建议查阅最新的Debian官方文档或社区论坛以获取具体安装步骤和建议。

2.解决了spyder启动时候终端提示的一些错误

终端提示:

libGL error: failed to load driver: nouveau

libGL error: MESA-LOADER: failed to open swrast: /usr/lib/dri/swrast_dri.so

安装了一堆软件,然后,解决了终端提示的错误:

sudo apt install mesa*
conda install -c conda-forge libstdcxx-ng
sudo apt install bumblebee

不知道到底哪个起的作用,可能还有一些。

最后,还剩一个提示错误问题:fromIccProfile: failed minimal tag size sanity

问了一下GPT,回答:

fromIccProfile: failed minimal tag size sanity 错误通常与色彩配置文件(ICC配置文件)处理有关,并不直接与中文显示乱码有关。这个错误可能表明字体渲染库(如FreeType)在处理ICC配置文件时发现了一些不一致或者损坏的数据。

中文显示乱码一般是由于以下一些原因导致的:
1. 没有安装正确的中文字体。
2. 字体配置有误,可能是字体别名设置不正确,或者是优先级的问题。
3. 系统的locale设置不支持中文。

4. 应用程序自身缺少对特定文字编码或字体的支持。

为了解决中文显示乱码的问题,你应该:
1. 确认已经安装了正确的中文字体。
2. 检查并更新字体缓存,通过运行 fc-cache -fv
3. 确保你的系统locale配置包括中文支持,比如 zh_CN.UTF-8

4. 对应用程序进行适当的配置,确保其使用正确的中文字体和编码。

从理论上讲,如果一个字体使用了一个损坏的ICC配置文件,它可能会导致字体渲染出现问题。然而,这通常会影响该字体的外观,比如颜色渲染,而不太可能导致字符显示为乱码。

如果你遇到 fromIccProfile: failed minimal tag size sanity 错误,并且伴随有中文显示问题,两者可能是相互独立的事件。你应该分别针对每一个问题进行调查和修复。对于字体渲染错误,你可能需要确认你的字体文件是否损坏,或者尝试重装字体渲染库。对于中文乱码,你应该按照之前的步骤检查和配置你的字体和locale设置。

应该显示乱码不是这个原因,这个提示错误就先不解决了。

3.百度搜索

找到一段python代码:

from matplotlib import font_managerfontnamelist = font_manager.get_font_names()
print(fontnamelist)

通过这段代码查看了matplotlib当前系统已经安装的字体。

4.查看字体文件

sudo locate .ttf

5.问文心一言

NotoSans-SemiCondensed.ttf是什么?

NotoSans-SemiCondensed.ttf是谷歌Noto字体家族中的一个半压缩版本的字体文件。Noto是一个支持多种语言的字体家族,旨在为全球用户提供一致的文字体验。这个半压缩版本可能具有更紧凑的字符宽度,适合在有限的空间中使用。

NotoSansLisu-Bold.ttf是什么?

NotoSansLisu-Bold.ttf是谷歌Noto字体家族中的一款粗体版本的Lisu字体文件。Lisu是一种用于Lisu语言的字体,Lisu语言是中国的少数民族语言之一。这个粗体版本可能具有更明显的字重和更强烈的视觉效果,适用于需要突出显示或强调某些文字的场景。

NotoSansMalayalam-Black.ttf是什么?

NotoSansMalayalam-Black.ttf是谷歌Noto字体家族中的一款极粗体版本的马拉雅拉姆语字体文件。这款字体特别适用于需要强烈视觉冲击力或突出显示某些文字的设计中。

谷歌Noto字体家族中中文字体文件是什么?

谷歌Noto字体家族中的中文字体文件是Noto Sans CJK。Noto Sans CJK是一套专为亚洲语言设计的字体,支持包括简体中文、繁体中文、日文和韩文在内的多种语言。

Noto Sans CJK JP是什么意思?

Noto Sans CJK JP指的是Noto Sans CJK字体家族中的日语版本。Noto Sans CJK是一套专为亚洲语言设计的字体,支持包括简体中文、繁体中文、日文和韩文在内的多种语言。其中,JP代表日语版本。

plt.rcParams['font.sans-serif'] = ['Noto Sans CJK JP'] # 指定默认字体 设置这个后,为什么原来中文的乱码就能显示了?

当你在Python的matplotlib库中使用plt.rcParams来设置默认字体为'Noto Sans CJK JP'时,你实际上是在告诉matplotlib使用这种字体来显示文本。

在默认情况下,matplotlib可能并不支持某些语言(例如中文)的字符集,因此当你在图中使用中文时,可能会出现乱码。通过指定'Noto Sans CJK JP'作为默认字体,你告诉matplotlib使用这种字体来显示中文,因为这种字体支持中文字符集。

具体来说,'Noto Sans CJK JP'是谷歌为亚洲语言(包括中文、日文等)提供的一种开源字体。由于这种字体支持中文字符集,因此在使用这种字体作为默认字体后,matplotlib就能正确地显示中文,避免了乱码问题。

当然,确保系统中已经安装了'Noto Sans CJK JP'字体。如果系统中没有这个字体,你可能需要下载并安装它,或者选择其他支持中文的字体。

五、相关链接

Matplotlib绘图如何添加任意字体 - 知乎

Python中使用matplotlib时显示中文乱码_(或更改字体)_matplotlib中文乱码问题-CSDN博客

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

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

相关文章

Python tkinter 初探Toplevel控件搭建父子窗口

目录 Toplevel控件搭建父子窗口 最简明的父子窗口框架 改进一:屏蔽和开放按钮 改进二:子窗口始终在主窗口之上 改进三:增加子窗口的关闭协议 改进四:使子窗口长获焦点 总结 Toplevel控件搭建父子窗口 最近,用P…

k8s集群1.23.0版本部署说明

1.部署 k8s1.23.0版本与1.26.0版本的部署基本差不多,只不过k8s 1.23版本不需要部署cri-docker,所以只需要在1.26.0版本部署的基础上不要cri-docker的部署即可 参考:kubeadm部署k8s 1.26.0版本高可用集群_kubeadm 高可用集群-CSDN博客 搭建…

【DP】198.打家劫舍

题目 法1&#xff1a;DP class Solution {public int rob(int[] nums) {int n nums.length;if (n 1) {return nums[0];}if (n 2) {return Math.max(nums[0], nums[1]);}int pre0 nums[0], pre1 Math.max(nums[0], nums[1]), max 0;for (int i 2; i < n; i) {max M…

行为型设计模式(一)模版方法模式 迭代器模式

模板方法模式 Template 1、什么是模版方法模式 模版方法模式定义了一个算法的骨架&#xff0c;它将其中一些步骤的实现推迟到子类里面&#xff0c;使得子类可以在不改变算法结构的情况下重新定义算法中的某些步骤。 2、为什么使用模版方法模式 封装不变部分&#xff1a;模版…

iManager服务备份

这里写自定义目录标题 超图微服务云套件大版本升级时&#xff0c;有时候会涉及服务的迁移或重新发布&#xff0c;此时需要对服务进行备份&#xff0c;以免重新发布服务出现漏的&#xff0c;便于核对。本文通过fetch实现了服务的备份&#xff0c;备份成果以数组对象形式存储在tx…

Ubuntu环境下SomeIP/CommonAPI环境搭建详细步骤

环境搭建 1.Boost安装 下载Boost源码 &#xff1a; https://www.boost.org/users/download/ 编译安装 首先安装编译所需依赖 sudo apt-get install build-essential g sudo apt-get install installpython-dev autotools-dev sudo apt-get install installlibicu-dev buil…

搭建知识付费平台?明理信息科技为你提供全程解决方案

明理信息科技saas知识付费平台 在当今数字化时代&#xff0c;知识付费已经成为一种趋势&#xff0c;越来越多的人愿意为有价值的知识付费。然而&#xff0c;公共知识付费平台虽然内容丰富&#xff0c;但难以满足个人或企业个性化的需求和品牌打造。同时&#xff0c;开发和维护…

【容器Docker】Docker学习笔记

1、什么是Docker&#xff1a; Docker 将程序和程序运行所依赖的所有环境都打包到镜像里。“build once, run anywhere”Docker 是容器的一种实现。 Windows 下如何安装Docker: 官方安装教程&#xff1a;Install Docker Desktop on Windows | Docker Docs有两种安装套装&…

使用openMVS库,在VS2022中启用c++17标准编译仍然报错

使用openMVS库&#xff0c;在VS2022中启用c17标准编译仍然报错 现象 项目中引用了某些开源库&#xff08;例如openmvs2.1.0&#xff09;&#xff0c;编译时要求启用编译器对c17的支持。 没问题&#xff01;大家都知道在下图所示的位置调整C语言标准&#xff1a; 但是&#…

sqlite3使用中的问题

1、创建自增使用 integer primary key autoincrement 2、注释使用 – 3、创建表时不能同时创建索引&#xff0c;需要create index 4、删除索引使用drop indx 5、在使用soci更新数据库时&#xff0c;数据没有更新&#xff0c;需要使用statement.execute(true) 6、在使用命令查询…

C++常见面试题-进阶部分50题

问题1&#xff1a; 解释C中的模板元编程是什么。 答案&#xff1a; 模板元编程是一种利用C模板来执行编译时计算的技术。它允许程序在编译期间进行复杂的计算&#xff0c;而非运行时。 问题2&#xff1a; C17中的结构化绑定是什么&#xff1f; 答案&#xff1a; 结构化绑定是…

智能优化算法应用:基于类电磁机制算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于类电磁机制算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于类电磁机制算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.类电磁机制算法4.实验参数设定5.算法…

rpc和消息队列区别

RPC 和消息队列都是分布式微服务系统中重要的组件之一&#xff0c;下面我们来简单对比一下两者&#xff1a; 从用途来看&#xff1a;RPC 主要用来解决两个服务的远程通信问题&#xff0c;不需要了解底层网络的通信机制。通过 RPC可以帮助我们调用远程计算机上某个服务的方法&a…

Unity CG内置文件

文档 内置文件 内置文件中的函数 常用宏 变量 CG内置文件位置和作用 位置 Unity安装目录 Editor/Data/CGIncludes中后缀为cginc的文件 作用 类似CG内置函数&#xff0c;提供常用的函数、结构体、变量等&#xff0c;提高开发效率 使用 CG模块中使用 #include “内置文件…

ArcGIS Pro中去除黑边方法汇总

在有些时候&#xff08;比如镶嵌栅格后&#xff09;&#xff0c;我们获取到的影像数据可能会有黑边&#xff0c;这里为大家汇总一下在ArcGIS Pro中去除黑边的方法&#xff0c;希望能对你有所帮助。 数据来源 本教程所使用的数据是从水经微图中下载的影像数据&#xff0c;除了…

vmware离线安装docker-compose

vmware离线安装docker-compose 最近安装docker-compose&#xff0c;发现git取拉取&#xff0c;不是拒绝连接就是报443错误&#xff0c;或者其他错误 最后发现用包直接传上去好用&#xff0c;不用git拉取了 离线安装docker-compose 本文章给的docker-compose离线包&#xff0c;…

C语言学习第二十四天(预处理)

1、预处理符号 C语言设置了一些可以直接使用的预处理符号 __FILE__//进行编译的源文件 __LINE__//文件当前的行号 __DATE__//文件被编译的日期 __TIME__//文件被编译的时间 __STOC__//如果编译器遵循ANSI C 其值是1&#xff0c;否则未定义 一个例子&#xff1a; printf(&…

JNDI注入Log4jFastJson白盒审计不回显处理

目录 0x00 前言 0x01 Maven 仓库及配置 0x02 JNDI 注入简介 0x03 Java-第三方组件-Log4J&JNDI 0x04 Java-第三方组件-FastJson&反射 0x05 白盒审计 - FastJson 0x06 白盒审计 - Log4j 0x07 不回显的处理方法 0x00 前言 希望和各位大佬一起学习&#xff0c;如果…

多线程面试题

文章目录 1. 如何停止正在运行的线程2. 请你谈谈JMM&#xff08;java内存模型&#xff09;3. AQS4. ReentrantLock实现原理5. 死锁怎么检测 1. 如何停止正在运行的线程 设置一个共享变量作为线程退出的标记&#xff0c;当这个标记不满足时while循环&#xff0c;线程一直运行&a…

uniapp图片上传说明

目录 1.文件上传组件 2.单文件上传 3.多文件上传 4.注意点 1.文件上传组件 前端上传组件使用uni-file-picker&#xff0c;可以自行进行下载使用。默认上传到绑定的服务空间&#xff0c;配置属性auto-upload为false关闭自动上传&#xff0c;可以限定上传的是图片还是文件&am…