当前位置: 首页 > news >正文

总结mac下解决matplotlib中文显示问题的几种方法

一、前言:

使⽤matplotlib画图时,由于matplotlib默认没有中⽂,显⽰中文时会出现空⽩⼩⽅块。

二、方法:

2.1 matplotlib中使用SimHei字体

1)进入终端后查看matplotlib的字体路径:

$ python
>>> import matplotlib
>>> print(matplotlib.matplotlib_fname())

得到路径:/Users/dongjun/.local/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc

2)下载SimHei.ttf字体:

https://us-logger1.oss-cn-beijing.aliyuncs.com/SimHei.ttf

3)将下载好的SimHei.ttf字体移动到第⼀步查询到的字体⽬录./fonts/ttf/下:

cp SimHei.ttf /Users/dongjun/.local/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/SimHei.ttf

4)清理matplotlib缓冲⽬录:

$ python
>>> import matplotlib
>>> print(matplotlib.get_cachedir())

得到缓冲目录为:/Users/dongjun/.matplotlib

$ rm -f /Users/dongjun/.matplotlib

5)修改matplotlib原始文件

vim /Users/dongjun/.local/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc

依次修改以下内容:

# 去掉前⾯的#
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.

6)重启测试

在matplotlib中导入SimHei字体,重新画图即可。

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

 2.2  使用其他字体

import cv2
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inlineplt.rcParams['font.sans-serif']=['Songti SC'] #用来正常显示中文标签
# 或者是下面这个,宋体和仿宋字体,都可以用。
plt.rcParams['font.sans-serif']=['STFangsong'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

Windows与Mac通用

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei','Songti SC','STFangsong']
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号

示例: 

 
import matplotlib.pyplot as plt
import matplotlib#from matplotlib import font_manager
#plt.rcParams['font.sans-serif'] = ['Heiti TC']#plt.rcParams['font.sans-serif'] = ['Songti SC']#plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']plt.rcParams['font.sans-serif'] = ['PingFang HK']# 创建数据
x = [1, 2, 3, 4, 5]
y1 = [2, 1, 9, 8, 10]
y2 = [100, 300, 500, 700, 900]# 创建图形和轴
fig, ax1 = plt.subplots()# 绘制左侧Y轴数据
ax1.plot(x, y1, 'b-')
ax1.set_xlabel('X轴')
ax1.set_ylabel('左侧Y轴', color='b')# 创建第二个Y轴
ax2 = ax1.twinx()# 绘制右侧Y轴数据
ax2.plot(x, y2, 'r--')
ax2.set_ylabel('右侧Y轴', color='r')# 显示图形
plt.show()

效果:

http://www.lryc.cn/news/320750.html

相关文章:

  • 探索区块链世界:从加密货币到去中心化应用
  • GitLab/Github从头开始配置秘钥
  • uni.getlocation h5获取定位失败后,阻塞问题
  • Flutter 运行 flutter doctor 命令长时间未响应
  • 【数据挖掘】练习2:数据管理2
  • 【iOS】——Blocks
  • 体验OceanBase OBD V2.5.0 组件内扩容和组件变更
  • 关于前端的学习
  • DataX脚本告别手动编写,用大模型或Java代码自动生成
  • ASP.NET通过Appliaction和Session统计在人数和历史访问量
  • 在基于全志V851se的TinyVision上手动构建 Linux 6.1 + Debian 12 镜像
  • 使用jenkins-pipeline进行利用项目文件自动化部署到k8s上
  • unity发布安卓获取读取权限
  • VSCode下使用github初步
  • 华为设备配置命令大全
  • 详解基于快速排序算法的qsort的模拟实现
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Polyline)
  • 项目风险管理
  • glib交叉编译
  • Android11实现能同时开多个录屏应用(或者共享屏幕或投屏时录屏)
  • 音视频实战---音频重采样
  • 主存中存储单元地址的分配
  • Python和R的区别是什么,Python与R的应用场景是什么?
  • azure databricks 常用的JDBC连接
  • 功能齐全的免费 IDE Visual Studio 2022 社区版
  • FreeRTOS入门基础
  • 蓝桥杯-24点-搜索
  • 【附下载】3Ds Max从安装、配置到入门提高和高级用法
  • 开源堡垒机Jumpserver
  • PyTorch学习笔记之基础函数篇(十五)