LINUX系统python通过matplotlib绘图中文字体乱码

本文详细介绍了如何在Linux系统下解决Python使用matplotlib绘图时出现的中文字体乱码问题,包括查找系统字体、上传字体、安装字体、配置matplotlib以及重新加载字体的方法。

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

LINUX系统python通过matplotlib绘图中文字体乱码,解决服务器里面没有字体的问题:

参考1:https://www.jianshu.com/p/7b7a3e73ef21

参考2:https://www.zhihu.com/question/25404709

查看环境
input: 终端

cat /etc/redhat-release

output:

CentOS Linux release 7.4.1708 (Core)

服务器里面的字体路径,后续会更改该文件内容中的参数配置:
input: python

import matplotlib
matplotlib.matplotlib_fname()

output:

/usr/local/anaconda/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc

首先查看系统内的中文字体,终端输入,查看是否存在相关字体:
input:

fc-list :lang=zh

output:

/usr/share/fonts/ch_hei/wen_quan_yi_hei.ttf: WenQuanYi Zen Hei Mono,文泉驛等寬正黑,文泉驿等宽正黑:style=Medium,中等

如果没有,则可以从本地copy一份simhei.ttf文件到服务器,本地路径C:\Windows\Fonts;或者从网上下载一份SimHei下载地址
通过SecureCRT中的SFTP进行文件传输,采用put方法;堡垒机用,rz file_path
上传到服务器的文件夹,在 /usr/share/fonts 路径下创建存放此字体的文件夹yourfontdir,并下载的ttf文件复制到yourfontdir中,如果没有fonts,可以通过mkdir建立;

cd /usr/share/fonts/yourfontdir
rz file_path

上传完毕后,需要在服务器内安装存放的字体,mkfontscale和mkfontdir,或者fontconfig;
如果mkfontscale命令无效,那么需要在linux里面先安装:

yum install -y fontconfig mkfontscale
#生成字体索引信息. 会显示字体的font-family
sudo mkfontscale
sudo mkfontdir
fc-cache #更新字体缓存

然后修改matplotlibrc文件配置,进入到文件路径,vi文件并进行通过i操作进行修改,取消以下几行的注释,删除#号,改好之后esc退出,英文状态下:wq保存退出:

font.family         : sans-serif 
font.sans-serif     : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif,WenQuanYi Zen Hei Mono
axes.unicode_minus  : False #这里要把True改为False,作用就是解决负号'-'显示为方块的问题

将配置好的ttf字体复制一份到matplotlib的字体文件夹内:

mv /usr/share/fonts/yourfontdir/simhei.ttf /usr/local/anaconda/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf
#删除缓冲目录
rm ~/.cache/matplotlib
#如果有字体,绘图还是显示小方块,则需要强力删除
rm -rf ~/.matplotlib/*.cache

此时字体已经存在于服务器,配置改了之后不会生效,需要在python内重新加载,即:

python console:
from matplotlib.font_manager import _rebuild
_rebuild() #reload一下
### 如何在 Linux 系统上配置 Matplotlib 支持中文显示 要在 Linux 环境下使 Matplotlib 正确显示中文字符,可以通过以下方法完成: #### 方法一:通过修改 `matplotlib` 的全局配置文件 找到并编辑 `matplotlibrc` 文件的位置。该文件通常位于 `~/.config/matplotlib/` 或者通过 Python 脚本获取其具体位置: ```python import matplotlib print(matplotlib.matplotlib_fname()) ``` 在此文件中添加或者修改如下内容来指定默认字体为支持中文的字体(如 SimHei 黑体): ```plaintext font.sans-serif: SimHei axes.unicode_minus: False ``` 上述设置会告诉 Matplotlib 使用黑体作为默认字体,并关闭 Unicode 下划线的支持以便负号正常显示[^3]。 #### 方法二:动态调整字体设置 如果不想更改全局配置文件,则可以在脚本运行时临时设定字体参数。例如: ```python import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体为黑体 plt.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号 '-' 显示为方块的问题 # 绘制带有中文标签的图形实例 x = [1, 2, 3] y = [4, 5, 6] plt.plot(x, y) plt.title('测试标题', fontproperties=FontProperties(fname='/usr/share/fonts/truetype/wqy/wqy-microhei.ttc')) plt.xlabel('横轴') plt.ylabel('纵轴') plt.show() ``` 这里利用了 `FontProperties` 类加载本地 TTF 字体文件以确保即使未预装某些特定字体也能正常使用[^5]。 #### 方法三:安装额外的 TrueType 字体包 有时系统可能缺少必要的中文字体资源。对于基于 Debian 的发行版 (如 Ubuntu),可通过命令行工具轻松安装常用开源汉字字库: ```bash sudo apt-get update && sudo apt-get install fonts-wqy-zenhei ttf-mscorefonts-installer -y ``` 这一步骤将下载并安装文泉驿正黑以及其他微软核心字体至操作系统中[^4]。 以上三种方式均可有效解决 Linux 平台下的 Matplotlib 中文化难题,实际操作过程中可根据个人需求灵活选用其中之一或组合应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郑小柒是西索啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值