matplotlib & seaborn 中文显示

本文详细介绍了如何在Python环境中使用matplotlib显示中文,包括字体拷贝、配置文件修改、字体注册和重启Python等步骤。重点在于解决SimHei字体问题,确保负号显示和中文标签的正常显示。

1. 获取matplotlib所在的文件夹

import matplotlib
matplotlib.matplotlib_fname() #将会获得matplotlib包所在文件夹

2. 拷贝字体

将SimHei.ttf (可以在windows电脑上搜索找到)拷贝到 ~/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf

3. 修改配置文件

vi ~/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc 
# 查找如下行,去掉注释,注册SimHei 字体
font.serif          : SimHei, DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
font.sans-serif     : SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, 
axes.unicode_minus  : False    ## use unicode for the minus symbol  用来正常显示负号


4. 进入 ~/.cache/matplotlib 目录下,并删除matplotlib 下的fontList.josn

5. 重启python

6. 设置字体

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
sns.set(font='SimHei')
### 解决 MatplotlibSeaborn 图表中中文显示问题 #### 配置 Matplotlib 支持中文 要使 Matplotlib 正确显示中文,需调整其字体设置以使用支持中文的字体。具体做法如下: 1. **安装中文字体** 可通过系统包管理器或手动下载并安装适合系统的中文字体文件。 2. **修改 Matplotlib 字体配置** ```python import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] # 设置黑体为默认字体 plt.rcParams['axes.unicode_minus']=False # 解决负号'-'显示为方块的问题 ``` 上述代码片段设置了 `rcParams` 参数中的 `'font.sans-serif'` 列表,指定了 SimHei (即黑体)作为无衬线字体选项之一;同时关闭了 Unicode 减号处理,防止可能出现的符号渲染异常[^1]。 #### 处理 Seaborn 中文乱码现象 由于 Seaborn 基于 Matplotlib 构建,在某些情况下会重写部分样式设定,这可能导致即使已经解决了 Matplotlib中文显示问题后,Seaborn 输出仍然存在乱码情况。针对此状况可采取以下措施: - 在导入 seaborn 后立即执行相同或者类似的 rcParam 调整语句; - 或者利用 seaborn 自带的主题定制功能来确保所选主题不会干扰到之前定义好的全局参数。 ```python import seaborn as sns sns.set(font="SimHei", font_scale=1.0) # 设定全局使用的字体名称及大小缩放比例 ``` 这段代码展示了如何调用 `set()` 方法来自定义整个绘图环境下的字体属性,从而保证无论何时创建新的图形对象都能继承这些预设值[^2]。 #### 示例代码展示完整的解决方案 ```python # 导入必要的库 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 对matplotlib做基础配置 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False # 如果需要也可以在这里对seaborn做一些额外的初始化工作 sns.set(style="whitegrid", palette="muted", font='SimHei') # 测试数据集准备 tips = sns.load_dataset("tips") # 绘制箱形图测试是否能正常显示中文标题和坐标轴标签 ax = sns.boxplot(x="day", y="total_bill", data=tips) ax.set_title('不同日子的小费金额分布') ax.set_xlabel('星期几') ax.set_ylabel('总账单额'); ``` 该段脚本综合运用了前面提到的技术要点,并提供了一个简单的案例用于验证最终效果。当一切配置妥当时,应当能够看到带有清晰汉字标注的结果图像被成功呈现出来[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值