Matplolib设置字体 中文

文章讲述了如何在matplotlib中设置默认字体以避免乱码问题,特别是针对中文字符。通过引入FontProperties类,可以指定字体文件路径,如楷体(KaiTi.ttf),并应用于坐标轴标题、图例等。同时,文章还展示了如何为特定位置(如图表标题)设置不同字体,如将标题设置为楷体,其他标签设置为Arial。

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

设置默认字体

只要出现文字的地方首选默认字体。缺点:容易出现乱码。(字体设置成楷体时,坐标轴上的数据出现负值时符号会乱码)
找到字体文件,通常本体字体就够用了,在C:\Windows\Fonts目录下。通常是ttf格式或ttc格式

from matplotlib.font_manager import FontProperties

font_path = 'KaiTi.ttf' #文件路径
# 创建 FontProperties 对象,指定中文字体
font_prop = FontProperties(fname=font_path)
# 设置中文字体为默认字体
plt.rcParams['font.family'] = font_prop.get_name()

# 绘制示例图形,并使用中文字体
plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
plt.title('示例图表', fontproperties=font_prop)

设置指定位置字体

from matplotlib.font_manager import FontProperties
# 创建自定义字体对象
title_font = FontProperties(family="KaiTi") #"KaiTi"设置楷体格式,这里不是路径,KaiTi在自带的字体族中可以找到
label_font = FontProperties(family='Arial', size=12) #其他字体

ax.set_title('示例图表', fontproperties=title_font)#只有title是楷体格式

常见的一些中文字体族包括:

  • 'SimSun':宋体
  • 'SimHei':黑体
  • 'Microsoft YaHei':微软雅黑
  • 'KaiTi':楷体
  • 'FangSong':仿宋
### 永久设置 Matplotlib 默认字体的方法 在使用 Matplotlib 进行数据可视化时,用户经常需要更改默认字体以支持特定语言(如中文)或个性化需求。为了实现**永久性配置**,可以通过修改 Matplotlib 的配置文件 `matplotlibrc` 来完成。 #### 1. 查找配置文件路径 Matplotlib 的全局配置文件 `matplotlibrc` 存储在安装目录中。可以通过以下代码找到该文件的路径: ```python import matplotlib print(matplotlib.matplotlib_fname()) ``` 输出示例: ``` /usr/local/lib/python3.9/site-packages/matplotlib/mpl-data/matplotlibrc ``` 此路径通常位于系统 Python 包安装目录下,具体位置因操作系统和安装方式而异 [^3]。 #### 2. 修改 `matplotlibrc` 文件 找到 `matplotlibrc` 文件后,使用文本编辑器打开它,并找到以下几行进行修改: ```ini font.family : sans-serif font.sans-serif : DejaVu Sans, Bitstream Vera Sans, ... , SimHei font.size : 10 ``` - **`font.family`**:指定默认字体族,通常保留为 `sans-serif`。 - **`font.sans-serif`**:添加所需的中文字体(如 `SimHei`、`FangSong` 等)或英文字体(如 `Arial`、`Times New Roman`),多个字体之间用逗号分隔。 - **`font.size`**:可选地调整默认字体大小 [^2]。 例如,如果希望支持中文使用黑体作为默认字体,可以将其修改为: ```ini font.family : sans-serif font.sans-serif : SimHei, DejaVu Sans, Bitstream Vera Sans ``` #### 3. 清除字体缓存 修改完 `matplotlibrc` 后,Matplotlib 可能仍会使用旧的字体缓存文件 `fontList.json`。为确保新配置生效,需删除该缓存文件。缓存文件通常位于以下路径: - Linux/macOS: `~/.cache/matplotlib/` - Windows: `C:\Users\用户名\.matplotlib\` 删除 `fontList.json` 文件后,重新运行绘图脚本即可加载新的字体配置 [^2]。 #### 4. 验证字体配置 可通过以下代码验证字体是否已正确设置: ```python import matplotlib.pyplot as plt print(plt.rcParams['font.sans-serif']) print(plt.rcParams['axes.unicode_minus']) # 是否显示负号 ``` 若输出包含所需字体名称且图表中能正常显示中文,则说明配置成功 [^4]。 --- ### 示例代码:测试中文显示 ```python import matplotlib.pyplot as plt plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文支持 plt.rcParams['axes.unicode_minus'] = False # 解决负号 '-' 显示为方块的问题 plt.plot([1, 2, 3], [1, 4, 9]) plt.title("中文标题") plt.xlabel("X轴标签") plt.ylabel("Y轴标签") plt.show() ``` --- ### 总结 通过修改 `matplotlibrc` 文件并清除字体缓存,可以实现对 Matplotlib 字体的**永久设置**。这种方式适用于所有后续绘图任务,无需每次手动调用字体配置函数如 `plt.rcParams` 或 `matplotlib.font_manager` [^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

扮作大侠

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

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

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

打赏作者

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

抵扣说明:

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

余额充值