linux下matplotlib绘图无法显示中文

本文介绍在Ubuntu16.04环境下,使用python和matplotlib.pyplot绘图时,如何解决坐标轴无法显示中文的问题。通过下载并替换支持中文的字体文件,实现中文正常显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.背景

Ubuntu16.04, 使用python,调用matplotlib.pyplot绘图,坐标无法显示中文

2.方法

下载支持中文的字体,也可以从Windows下拷贝过来:C:/Windows/Fonts

在你调用的环境下打开终端:

import matplotlib
matplotlib.matplotlib_fname()

一般输出都是: .../site-packages/matplotlib/mpl-data/matplotlibrc

找到这个位置,会看到以下文件夹,打开fonts/ttf

将你的字体,替换下面这一个:

 

完成:

3.后记

一种简单粗暴的方法,之前也试了网上很多方法,但是都没成功.

### Matplotlib 中文显示问题解决方案 在处理 Matplotlib 绘图时,如果遇到中文无法正常显示的问题,可以通过调整字体配置来解决问题。以下是几种常见的方法: #### 1. 使用 `fontproperties` 设置特定字体 可以在绘制图形时通过参数 `fontproperties` 显式指定支持中文的字体[^2]。例如: ```python from matplotlib.font_manager import FontProperties import matplotlib.pyplot as plt # 创建FontProperties对象并加载中文字体文件 font = FontProperties(fname='/System/Library/Fonts/PingFang.ttc') plt.text(0.5, 0.5, '你好', fontproperties=font, size=50) plt.show() ``` #### 2. 修改全局字体配置 为了使整个项目中的图表都能正确显示中文,可以修改 Matplotlib 的全局字体设置。这通常通过 `matplotlib.rc` 或者直接操作 `rcParams` 实现[^1]。 ##### 方法一:使用 `matplotlib.rc` ```python import matplotlib matplotlib.rc('font', family='SimHei') # SimHei 是黑体的一种实现方式 matplotlib.rc('axes', unicode_minus=False) # 处理负号显示问题 ``` ##### 方法二:通过 `rcParams` 配置字典 ```python import matplotlib.pyplot as plt import matplotlib matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体为黑体 matplotlib.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示异常的问题 plt.plot([1, 2], [3, 4]) plt.title('测试标题') plt.xlabel('横坐标标签') plt.ylabel('纵坐标标签') plt.show() ``` #### 3. 动态查找系统可用字体 有时可能不确定哪些字体支持中文,在这种情况下可以动态查询系统的字体列表[^3]。对于 Linux 和 macOS 用户来说,命令行工具可以帮助快速找到合适的字体: - **Linux**: 执行 `fc-list :lang=zh` 列出所有支持中文的字体。 - **macOS**: 可以尝试 `/Library/Fonts` 路径下的 `.ttf` 文件作为候选字体。 随后将这些字体路径传递给 `FontProperties` 对象或者直接写入到 `rcParams` 中。 --- ### 总结 以上介绍了三种主要解决 Matplotlib 图形中文字体显示问题的方式,分别是利用 `fontproperties` 参数单独定义字体、更改全局字体配置以及借助操作系统自带功能筛选适合的字体资源。每种方法各有优劣,请依据实际需求选取最恰当的一个实施即可。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值