Matplotlib 的字体参数设置方法(MAC OSX)

我们在使用Python进行绘制函数图时,如果标题使用汉字,或者是坐标轴再或者是说明使用汉字,就会有可能出现乱码。

解决方法很简单,不用下载任何第三方字体(让下字体的估计里面埋了特洛伊)。可以再matplotlib中设置,使用电脑自带的字体就可以了。

首先是要确认你电脑上支持的字体:

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)

输出结果:

Gurmukhi MN

Gurmukhi MT

Gurmukhi Sangam MN

Heiti TC

Heiti TC

Helvetica

Helvetica Neue

Herculanum

Hiragino Maru Gothic Pro

Hiragino Mincho ProN

Hiragino Sans

Hiragino Sans

Hiragino Sans

Hiragino Sans

Hiragino Sans

Hiragino Sans

Hiragino Sans

Hiragino Sans

这里我就选一个比较常见的"Heiti TC"

这样设置:

python 复制代码
plt.rcParams['font.family'] = 'Heiti TC'  # 替换为你选择的字体

作图的源代码如下:

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

plt.rcParams['font.family'] = 'Heiti TC'  # 替换为你选择的字体

# 1. 定义Michaelis-Menten方程
def michaelis_menten(s, Vmax, Km):
    return (Vmax * s) / (Km + s)

# 2. 生成模拟数据(添加高斯噪声)
np.random.seed(42)
S = np.linspace(0, 100, 50)  # 底物浓度0-100
Vmax_true, Km_true = 50.0, 10.0  # 真实参数
v_noise = np.random.normal(0, 3, len(S))  # 噪声
v_observed = michaelis_menten(S, Vmax_true, Km_true) + v_noise

# 3. 使用非线性最小二乘拟合
params, cov = curve_fit(michaelis_menten, S, v_observed, p0=[30, 5])
Vmax_fit, Km_fit = params

# 4. 结果可视化
plt.figure(figsize=(10, 6))
plt.scatter(S, v_observed, color='blue', label='观测数据 (含噪声)')
plt.plot(S, michaelis_menten(S, Vmax_true, Km_true), 
         'k--', lw=2, label=f'真实曲线: $V_{{\max}}$={Vmax_true}, $K_m$={Km_true}')
plt.plot(S, michaelis_menten(S, Vmax_fit, Km_fit), 
         'r-', lw=2, label=f'拟合曲线: $V_{{\max}}$={Vmax_fit:.1f}, $K_m$={Km_fit:.1f}')

plt.axhline(y=Vmax_fit, color='gray', linestyle=':', alpha=0.7)
plt.axvline(x=Km_fit, color='gray', linestyle=':', alpha=0.7, 
            label=f'$K_m$位置 ($v=V_{{\max}}/2$)')

plt.title('Michaelis-Menten方程模拟与拟合', fontsize=14)
plt.xlabel('底物浓度 [S]', fontsize=12)
plt.ylabel('反应速率 v', fontsize=12)
plt.legend()
plt.grid(alpha=0.3)
plt.show()
相关推荐
咕白m62516 分钟前
Python 高效添加与管理 Excel 工作表
后端·python
pixle01 小时前
【 LangChain v1.2 入门系列教程】【四】结构化输出,让 Agent 返回可预测的结构
python·ai·langchain·agent·智能体
木心术11 小时前
openclaw与Hermes的优劣势对比
人工智能·python·opencv·自动化
潇洒畅想1 小时前
1.2 希腊字母速查表 + 公式阅读实战
java·人工智能·python·算法·rust·云计算
深度学习lover1 小时前
<数据集>yolo 瓶盖识别<目标检测>
人工智能·python·yolo·计算机视觉·瓶盖识别
测绘第一深情1 小时前
MapQR:自动驾驶在线矢量化高精地图构建的端到端 SOTA 方法
数据结构·人工智能·python·神经网络·算法·机器学习·自动驾驶
高洁011 小时前
AI算法实战:逻辑回归在风控场景中的应用
人工智能·python·深度学习·transformer
书香门第2 小时前
搭建免费的Ollama AI Agent
人工智能·python·ollama
小白学大数据2 小时前
分布式爬虫核心技术详解与工程实践
开发语言·分布式·爬虫·python
Ulyanov2 小时前
打造现代化雷达电子对抗仿真界面 第二篇:雷达电子对抗仿真系统核心功能实现
前端·python·信息可视化·数据可视化·系统仿真·雷达电子战