Mac/Linux系统matplotlib中文支持问题

news/2024/9/19 0:53:08/ 标签: matplotlib, 中文显示, mac, Linux

背景

matplotlib是python中最常用的数据可视化分析工具,Mac和Linux系统无中文字体,不支持中文显示(希望后续可以改进),需要进行字体的下载和设置才能解决。笔者经过实践,发现Mac系统和Linux系统解决方案略有区别,因此分别记录一下,供读者参考。

Mac系统

详细步骤:

step 1. 网上下载字体SimHei.ttf(已上传到本文资源,点击文章顶部SimHei.ttf进行下载)

step 2. 将字体复制到matplotlib/mpl-data/matplotlibrc/fonts/ttf文件夹下
首先,在mac终端(cmd)输入python,进入python界面,然后输入以下代码查找matplotlib字体路径文件夹

import matplotlib
print(matplotlib.matplotlib_fname())

我输出的路径地址是:
/usr/local/lib/python3.11/site-packages/matplotlib/mpl-data/matplotlibrc

把下载好的SimHei字体拷贝到ttf文件夹里:
/usr/local/lib/python3.11/site-packages/matplotlib/mpl-data/matplotlibrc/fonts/ttf

Mac系统文件夹不好找,方法:按Shift+Command+G,然后输入上述文件地址,点击“前往文件夹”,然后把字体copy到文件夹下

step 3. 修改matplotlibrc配置文件,修改内容如下3项:

font.family:  sans-serif
# 去掉前面的# 
font.sans-serif: SimHei, DejaVu Sans, Bitstream Vera Sans,
# 去掉前面的#,并在冒号后面添加SimHei
axes.unicode_minus: False  # use Unicode for the minus symbol rather than hy    phen.  See
# 去掉前面的#,并将True改为False

 step 4. 删除matplotlib的系统缓存

关闭所有python终端界面,在终端运行如下命令:

rm -rf ~/.matplotlib/*

或者 运行如下命令,查找matlib缓存地址

import matplotlib
print(matplotlib.get_cachedir())

假设输出为/Users/feilong/.matplotlib运行

rm -rf /Users/feilong/.matplotlib

step 5. 需要重启jupyter notebook kenel,测试是否成功

测试如下代码,如果能够在输出图片中能够显示“中文”,则配置成功。

import matplotlib
import matplotlib.pyplot as plt# from matplotlib import font_manager as fm, rcParams
# plt.rcParams['font.sans-serif']=['SimHei'] # 修改了matplotlibrc后不需要
# plt.rcParams['axes.unicode_minus']=False   # 修改了matplotlibrc后不需要# 创建一个图像
plt.figure()# 添加文本
plt.text(0.5, 0.5, '中文', fontsize=20, fontweight='bold', color='blue')# 显示图像
plt.show()

至此,Mac系统中matplotlib中文显示的问题就解决了 

Linux系统

Linux系统的matplotlib中文支持解决方案和Mac类似,但Linux上可能没有图形化操作界面(特别是服务器),需要使用命令行操作模式。

step1:相同,如果没有浏览器,可以使用wget命令进行下载

step 2. 将字体复制到matplotlib/mpl-data/matplotlibrc/fonts/ttf文件夹下

假设SimHei.ttf字体存放在/mnt/workspace目录下,需要copy到/home/pai/lib/python3.11/site-packages/matplotlib/mpl-data/fonts/ttf/目录下

cp -r /mnt/workspace/SimHei.ttf /home/pai/lib/python3.11/site-packages/matplotlib/mpl-data/fonts/ttf/

step 3. 修改matplotlibrc配置文件,修改内容如下3项

需要使用vim编辑器来打开和编辑配置文件

# 进入文件夹
cd /home/pai/lib/python3.11/site-packages/matplotlib/mpl-data/
# 使用vim 打开配置文件
vim matplotlibrc# 按I键开启insert模式,此时命令行终端出现“INSERT”字样,进行配置修改
# 修改完成按ESC键返回浏览模式
# 按shift+:键,此时命令行终端出现“:”字样,然后输入wq(保存并退出),修改完成

step 4. 删除matplotlib的系统缓存

关闭所有python终端界面,查找缓存地址,在终端运行如下命令:

import matplotlib
print(matplotlib.get_cachedir())

 print输出:/root/.cache/matplotlib ,清除matplotlib缓存

rm -rf /root/.cache/matplotlib

后续步骤相同 

参考文章:

1. https://zhuanlan.zhihu.com/p/449589031

2. Mac系统jupyter notebook中matplotlib中文无法显示的解决办法_notebook plt画图中文不显示-CSDN博客


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

相关文章

Windows系统Nginx下载安装配置 运行错误处理

Nginx是一款轻量级的web 服务器/反向代理 服务器。本篇文章主要是nginx的下载安装,处理运行中遇到的问题,配置反向代理。主要分为两部分:下载安装和配置。 目录 1.下载安装 2.nginx配置反向代理 1.下载安装 nginx官网:nginx: …

PHP软件下载-安装-环境配置

.1.下载 下载地址如下 windows.php.net - /downloads/releases/ 安装包如下. .2.安装 可以在D盘或者E盘的根目录创建一个自定义目录。注意文件夹目录中不能包含中文,不能包含空格等特殊字符。 版本说明: (1)ts表示非线程安全版本。这个安装包还指明了…

基于单片机的水箱水质监测系统设计

本设计基于STM32F103C8T6为核心控制器设计了水质监测系统,选用DS18B20温度传感器对水箱水体温度进行采集;E-201-C PH传感器获取水体PH值;选用TS-300B浊度传感器检测水体浊度;采用YW01液位传感器获取水位,当检测水位低于…

华为云征文|部署电影收藏管理器 Radarr

华为云征文|部署电影收藏管理器 Radarr 一、Flexus云服务器X实例介绍1.1 云服务器介绍1.2 应用场景1.3 性能模式 二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Radarr3.1 Radarr 介绍3.2 Docker 环境搭建3.3 Radarr 部署3.4 Rada…

PowerShell脚本编写:自动化Windows开发工作流程

在现代软件开发中,自动化已经成为提高效率和降低人为错误的重要手段之一。Windows开发者尤其依赖于自动化脚本来简化日常工作流程。PowerShell作为Windows的强大命令行工具和脚本语言,为开发者提供了丰富的功能和灵活性,使得多种开发和管理任…

结构体(2)

有任何不懂的问题可以评论区留言&#xff0c;能力范围内都会一一回答 我们先直接上代码看看结构体的另一种用法 1.匿名结构体 define _CRT_SECURE_NO_WARNINGS #include <stdio.h>//第一个struct struct {char c;int i;double d; }s1;//第二个struct struct {char c;i…

密码管理最佳实践:安全存储与定期更换的艺术

在数字化时代&#xff0c;密码作为我们个人信息与资产安全的第一道防线&#xff0c;其重要性不言而喻。然而&#xff0c;随着网络威胁日益复杂多样&#xff0c;仅仅设置一个强密码已不足以保障安全。良好的密码管理实践&#xff0c;特别是安全存储与定期更换密码&#xff0c;成…

【Python机器学习】NLP词中的数学——向量化

我们将文本转换为基本的数值&#xff0c;虽然只是把它们存储在字典中。我们不使用频率字典来描述文档&#xff0c;而是构建词频向量。在Python中&#xff0c;这可以使用列表来实现&#xff0c;但通常它是一个有序的集合或数组&#xff1a; document_vector[] doc_lengthlen(to…

MATLAB智能优化算法-学习笔记(2)——变邻域搜索算法求解旅行商问题【过程+代码】

旅行商问题 (TSP) 旅行商问题(Traveling Salesman Problem, TSP)是经典的组合优化问题之一。问题的描述是:给定若干个城市以及每对城市之间的距离,一个旅行商需要从某个城市出发,访问每个城市恰好一次,最后回到出发城市,目标是找到一条总距离最短的环路。TSP 是 NP-har…

SQL 注入之 sqlmap 实战

在网络安全领域&#xff0c;SQL 注入攻击一直是一个严重的威胁。为了检测和利用 SQL 注入漏洞&#xff0c;安全人员通常会使用各种工具&#xff0c;其中 sqlmap 是一款非常强大且广泛使用的开源 SQL 注入工具。本文将详细介绍 sqlmap 的实战用法。 一、sqlmap 简介 sqlmap 是一…

安装vmtools管理虚拟机教程

目录 1.什么是vmtools 2.安装教程 2.1删除和安装 2.2文件的复制和粘贴 2.3指令操作 3.检验效果 4.小结 1.什么是vmtools vmtools就是安装之后可以让我们更好的管理我们的虚拟机&#xff1b; 我们可以设置windows和centos共享的文件夹&#xff0c;让该文件夹实现共享&am…

win11,vscode上用docker环境跑项目

1.首先用dockerfile创建docker镜像 以下是dockerfile文件的内容&#xff1a; FROM pytorch/pytorch:1.11.0-cuda11.3-cudnn8-devel LABEL Service"SparseInstanceActivation"ENV TZEurope/Moscow ENV DETECTRON_TAGv0.6 ARG DEBIAN_FRONTENDnoninteractiveRUN apt-…

milvus多个Querynode,资源消耗都打在一个节点上

milvus 查询时的原理 当读取数据时&#xff0c;MsgStream对象在以下场景中创建&#xff1a; 在 Milvus 中&#xff0c;数据必须先加载后才能读取。当代理收到数据加载请求时&#xff0c;会将请求发送给查询协调器&#xff0c;查询协调器决定如何将分片分配到不同的查询节点。…

【原型设计工具评测】Axure、Figma、Sketch三强争霸

在当今的数字化设计领域&#xff0c;选择合适的原型设计工具对于项目的成功至关重要。Axure、Figma 和 Sketch 是目前市场上最受欢迎的三款原型设计工具&#xff0c;它们各具特色&#xff0c;满足了不同用户的需求。本文将对这三款工具进行详细的对比评测&#xff0c;帮助设计师…

苹果笔记本电脑能不能玩游戏?苹果电脑玩游戏咋样?

过去Mac玩不了游戏最大的问题&#xff0c;就是图形API自成一体&#xff0c;苹果既不支持微软的DirectX&#xff0c;同时为了推广自家的Metal图形API&#xff0c;又对OpenGL和Vulkan两大主流的通用API敬而远之。游戏生态、硬件瓶颈让苹果电脑不适合玩游戏。 不过说到底&#xf…

Qt详解QHostInfo

文章目录 前言QHostInfo简介QHostInfo的优势使用流程概述QHostInfo主要函数1. `QHostInfo::lookupHost()`2. `QHostInfo::fromName()`3. `QHostInfo::addresses()`4. `QHostInfo::error()`5. `QHostInfo::errorString()`使用示例更多用法总结前言 QHostInfo 是 Qt 网络模块中的…

支付平台一般采取哪些措施来保护我的个人信息

支付平台个人信息保护措施概览 支付平台为了保护用户的个人信息&#xff0c;采取了多种安全措施。这些措施主要包括数据加密传输、多重身份验证、实时监测与风险预警系统、安全支付环境的建立等。支付平台通常采用SSL/TLS等加密技术来保障用户信息在传输过程中的安全&#xff…

75.给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,实现一个算法原地 对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列

LeetCode 颜色分类问题详解 一、题目描述 给定一个包含红色、白色和蓝色,共 n 个元素的数组 nums,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。 必须在不使用库内置的 sort 函数的…

mysql查询慢除了索引问题还会是因为什么?

问题 作为一个程序员SQL查询慢的问题在工作和面试中都是会经常遇到的问题, 一般情况下我们都会联想到索引问题, 那么除了索引问题还有什么其他的场景会导致SQL查询慢呢? MySQL执行查询逻辑 例如我们使用可视化工具执行这样一条SQL: select * from user_info where age 10;…

基于ssm+vue+uniapp的农业电商服务系统小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…