Python matplotlib中文字体设置

在Python的matplotlib库绘图时,遇到中文标题和轴标签无法正常显示的状况。通过设置matplotlib的配置参数`font.sans-serif`和`axes.unicode_minus`,可以确保中文和负号正确显示。示例代码中展示了如何设置并创建包含中文的图表。

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

在matplotlib绘图过程中,中文的标题或者轴标中如果含有中文,会出现不能正常显示的问题。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
 
x = np.linspace(-10,10,200)
y = x
plt.plot(x,y)
 
# 设置matplotlib正常显示中文和负号
matplotlib.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文
matplotlib.rcParams['axes.unicode_minus']=False     # 正常显示负号
 
plt.xlabel("横轴/单位")
plt.ylabel("纵轴/单位")
plt.title("标题")
plt.show()
### 配置 Matplotlib 支持中文字体 要在 macOS 上配置 Matplotlib 以支持中文字体,可以按照以下方法操作: #### 设置字体路径 首先确认 Matplotlib 的安装位置以便后续调整字体设置[^1]。通过修改 `rcParams` 参数来指定中文字体。 #### 获取系统可用字体列表 可以通过 Python 脚本获取当前系统中的所有 TTF 字体文件名称并打印出来[^2]: ```python from matplotlib import pyplot as plt import matplotlib a = sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist]) for i in a: print(i) ``` #### 添加中文字体Matplotlib 如果发现系统自带的字体不包含合适的中文字体,则可以从其他渠道下载适合的中文字体(如 SimHei 或 Noto Sans CJK),并将它们放置于 Matplotlib 可访问的位置。接着更新 Matplotlib 的字体缓存或者手动加载这些字体。 #### 修改 Matplotlib 默认参数 为了使图表能够正常渲染中文字符,需更改默认字体族为包含中文字体的一项,并处理可能出现的负号显示异常问题[^5]: ```python plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体作为默认字体 plt.rcParams['axes.unicode_minus'] = False # 解决负号 '-' 显示为方块的问题 ``` #### 测试不同中文字体效果 利用循环遍历多个候选中文字体,逐一测试其视觉表现是否满足需求[^3]: ```python import matplotlib.pyplot as plt import numpy as np fonts = [ 'Kaiti SC', 'Hiragino Sans GB', 'Songti SC', 'Heiti TC', 'PingFang HK', 'Arial Unicode MS' ] plt.figure(figsize=(10, 8)) for idx, font_name in enumerate(fonts): plt.subplot(len(fonts), 1, idx + 1) plt.text( 0.5, 0.5, f'示例文本 - {font_name}', fontsize=20, ha='center', va='center', fontfamily=font_name ) plt.axis('off') plt.tight_layout() plt.show() ``` 以上代码片段会生成一系列子图,每个子图展示一种特定字体下的汉字呈现状况。 #### 检查 sans-serif 家族成员 有时即使设置了 rcParam 值仍无法正确显示出中文是因为 sans-serif 列表里缺少对应项[^4]。此时可重新定义整个 sans-serif 序列加入所需字体名。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值