Mac系统下matplotlib中SimHei中文字体缺失报错的解决办法

news2024/11/20 18:47:37

问题描述

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] 
plt.rcParams['axes.unicode_minus']=False

使用matplotlib画图时,因为缺少字体,、图像上label上的中文显示时空白小方块。因为matplotlib默认没有中文。

解决方法:

Step 1. 在终端进入python3环境,查看matplotlib字体路径:

import matplotlib    
print(matplotlib.matplotlib_fname())

找到自己的matplotlib字体文件路径:

/Users/zhangzhang/miniforge3/envs/py38_pytorch/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf

(这里的路径与上面找出来的路径不一致,需要手动删除matplotlibrc,并添加fonts/ttf)

Step 2. 下载SimHei.ttf字体:

国内SimHei:https://www.duote.com/soft/915316.html

下载后,解压,并命名为SimHei.ttf

Step 3. 将下载好的SimHei.ttf字体移动到第一步查询到的字体目录./fonts/ttf/下:

mv 下载路径 目标路径

mv /Users/zhangzhang/Downloads/SimHei.ttf /Users/zhangzhang/miniforge3/envs/py38_pytorch/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf

(也可以手动找出路径,手动移)

Step 4. 打开终端,进入python环境,清理matplotlib缓冲目录:

import matplotlib
print(matplotlib.get_cachedir())

获取缓冲目录地址:/Users/zhangzhang/.matplotlib

终端输入exit()退出python环境,再删除上面找到的缓冲文件:

rm -rf /Users/dan/.matplotlib

Step 5. 修改原始文件:

打开第一步找到的路径:/Users/zhangzhang/miniforge3/envs/py38_pytorch/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc进行修改:

通过/定位(例如/font.sans-serif来定位),来修改下面三个地方:

#去掉前面的#
font.family:  sans-serif

#去掉前面的#,手动加SimHei
font.sans-serif: SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

#去掉前面的#,把True改为False
axes.unicode_minus: False  # use Unicode for the minus symbol rather than hyphen.  See# https://en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes

Step 6. 重启,测试。 (此时默认显示中文字体)

import matplotlib.pyplot as plt
plt.title('显示中文')
x = np.arange(7)
y = x
plt.plot(x, y, 'r-')
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.show()

不需要plt.rcParams['font.sans-serif'] = ['SimHei']就可以自动显示中文,至此中文显示的问题已经解决。

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

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

相关文章

多维时序 | MATLAB实现VMD-SSA-KELM和VMD-KELM变分模态分解结合麻雀算法优化核极限学习机多输入单输出时间序列预测

多维时序 | MATLAB实现VMD-SSA-KELM和VMD-KELM变分模态分解结合麻雀算法优化核极限学习机多输入单输出时间序列预测 目录多维时序 | MATLAB实现VMD-SSA-KELM和VMD-KELM变分模态分解结合麻雀算法优化核极限学习机多输入单输出时间序列预测预测效果基本介绍程序设计学习小结参考资…

城堡、游乐园、地下城!!!500+ 超棒 FBX 模型素材,全部都免费!

近期 Cocos 社区有好几位热心的开发者,整理了一些 CC0 协议 的游戏资源。如果你对 CC0 协议还不太了解,我找到一个中文版的协议说明,看下图:有几点比较重要:作者放弃著作权,已将作品贡献至公共领域可以复制…

【ROS】—— 机器人系统仿真 —RDF、Gazebo与Rviz综合应用(十六)

文章目录前言1. 机器人运动控制以及里程计信息显示1.1 ros_control 简介1.2 运动控制实现流程(Gazebo)1.2.1 为 joint 添加传动装置以及控制器1.2.2 xacro文件集成1.2.3 启动 gazebo并控制机器人运动2. 雷达信息仿真以及显示2.1 新建 Xacro 文件,配置雷达传感器信息…

C++STL之vector的模拟实现

由于vector和string的接口使用方法类似,这里便不再详细讲解vector各种接口的使用了,可以参考之前所发布的string的使用,或者从官方文档中获取详细的使用方法. 目录 vector介绍 构造函数(有参,无参,迭代器…

【14】Docker network | bridge | host | none | container

目录 1、Docker 运行的基本流程为: 2、Docker0 3、Docker默认的三种网络模式 4、Docker的网络命令 5、网络模式 6、实例: 7、bridge模式 8、host模式 9、none模式 10、container模式 11、自定义网络 1、Docker 运行的基本流程为: 1.用户是使用 Docker Clie…

UDS诊断系列介绍10-28服务

本文框架1. 系列介绍1.1 28服务概述2. 28服务请求与应答2.1 28服务请求2.2 28服务正响应2.3 否定应答3. Autosar系列文章快速链接1. 系列介绍 UDS(Unified Diagnostic Services)协议,即统一的诊断服务,是面向整车所有ECU的一种诊…

session利用的小思路

session利用的小思路 前言 做题的时候经常考到session利用,常见的基本就两种,session文件包含和session反序列化,之前没有详细总结过,就写写吧。 session文件包含 php.ini session的相关配置 session.upload_progress.enabl…

15、ThingsBoard-自定义阿里云SMS规则节点

1、概述 一个物联网平台承载着很多设备的连接,当设备出现异常的时候,能够快速的通知到运维管理员是非常重要的,thingsboard提供了自定义配置邮箱,但是它对支持发送短信的不是很友好,都是国外的sms服务商,我反正是不用那个,在国内常见就是阿里、腾讯、华为、七牛常用的s…

CORBA,Common Object Request Broker Architecture 简介

CORBA,Common Object Request Broker Architecture 简介 1. 简介 CORBA(Common ObjectRequest Broker Architecture,公共对象请求代理体系结构)是由OMG组织(OMG组织是一个国际性的非盈利组织,其职责是为应…

【17】Docker | CAdvisor_InfluxDB_Granfana | 成功安装

目录 1、查看目前docker容器的状态 2、三大组件 【1】、CAdvisor 【2】、InfluxDB 【3】、Granfana 3、用docker-compose安装三个组件 4、三大组件的登录 【1】浏览cAdvisor收集服务,http://ip:8080 【2】浏览influxdb存储服务,http://ip:8083 …

python日志处理模块讲解-loguru

说明: 本篇文章主要讲的是python日志模块loguru详解,感兴趣的同学赶快来看一看吧。 背景: 在部署一些定时运行或者长期运行的任务时,为了留存一些导致程序出现异常或错误的信息,通常会采用日志的方式来进行记录这些…

运放指标-压摆率SR

1. 压摆率SR 处理交流信号时,压摆率是运放器件重要的指标。其表示运放输出电压的转换速率。在高频信号时,若压摆率不够,则运放输出的信号会变形,导致不满足要求。其实际就是运放输出信号的分辨率,只有分辨率足…

机器学习中的数学基础(四):概率论

机器学习中的数学基础(四):概率论4 概率论4.1 一些概念4.2 二维随机变量4.2.1 离散型4.2.2 连续型4.3 边缘分布4.3.1 离散型边缘分布4.3.2 连续型边缘概率密度4.4 期望4.4.1 一维期望4.4.2 二维期望4.5 马尔可夫不等式4.6 切比雪夫不等式在看…

Vue2.0开发之——组件数据共享-Eventbus(39)

一 概述 兄弟组件之间数据共享的方案—EventBusEventBus的使用步骤EventBus的使用示例 二 兄弟组件之间数据共享的方案—EventBus 在 vue2.x 中,兄弟组件之间数据共享的方案是EventBus。 三 EventBus的使用步骤 创建 eventBus.js 模块,并向外共享一…

个人项目部署在云服务器上以及购买云服务器后如何操作

一. 购买云服务器后简单的操作1.镜像: 镜像可以认为是云服务器的操作系统,选择什么镜像云服务器就安装对应的操作系统。云服务器操作系统主要分为两大类,即Linux和Windows. 本次说明在linux操作系统下进行项目的部署, 那么在选择镜像的时可以选择Linux镜…

linux系统中利用QT实现串口通信的方法

大家好,今天主要和大家分享一下,如何使用QT中的串口通信方法。 目录 第一:资源简介 第二:应用实例的具体实现 第三:程序运行效果 第一:资源简介 在开发板的资源中出厂系统中,默认已经配置了两…

ASP.NET Core 3.1系列(27)——Autofac使用JSON、XML配置文件

1、前言 很多IoC框架都支持以配置文件的形式实现接口和类的注册,Autofac当然也不例外。本文就来介绍一下如何利用JSON、XML等配置文件来实现接口和类的注册。 2、定义接口和类 这里搭建了一个简单的分层项目,如下图所示: Repository层代码…

Verilog HDL

一、基础语法 1. 基础知识 (1)逻辑值 逻辑0:低电平。 逻辑1:高电平。 逻辑X:未知,可能是高电平,也可能是低电平。 逻辑Z:高阻态,外部没有激励信号,是一…

读书笔记《深度学习与图像识别原理与实践 大白话讲解对小白易懂》2022-8-5

开始 目录前言1. 常见深度学习框架2. 图像分类算法2.1 传统类2.2 机器学习2.2.1 人工神经网络(神经元)2.2.2 卷积神经网络3. 目标检测算法3.1 分类定位(单目标)3.2 分类定位(多目标,目标检测)3.…

近端串扰NEXT和远端串扰的ADS仿真

目录 近端串扰NEXT和远端串扰FEXT 串扰仿真原理图 NEXT特征 减少NEXT的措施 FEXT特征 减少FEXT的措施 本文记录近阶段对近端串扰和远端串扰概念的理解。 经验法则:最大可容许串扰大约是信号摆幅的5%。 近端串扰NEXT和远端串扰FEXT 静态线上的靠近驱动源的一端…