You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Matplotlib绘制函数图形与预期不符的问题排查及解决

解决Matplotlib绘制函数图形与预期不符的问题

问题描述

用户定义了如下增长型S曲线函数:

def f(x):
    return 50 * (1/(1 + ((50/5) -1 ) * e ** (-max(0, 0.1 * x))))

预期图形为标准的递增S型曲线,但实际用Matplotlib绘制出的图形和预期存在明显差异。用户曾怀疑是Python运算符优先级问题,添加大量括号后仍未解决。

问题根源

并非函数逻辑错误,坐标轴位置设置有误:原代码中使用ax.spines['bottom'].set_position('center')将x轴放在图形中心,导致视觉上曲线形态失真,和预期不符。

修正方案

将x轴的位置设置改为ax.spines['bottom'].set_position('zero'),让x轴对齐y=0的位置,即可得到符合预期的图形。

修正后的完整代码:

import matplotlib.pyplot as plt
import numpy as np
from math import e

# 生成200个-10到100之间的等间距数值
N=200
x = np.linspace(-10,100,N)

def f(x):
    return 50 * (1/(1 + ((50/5) -1 ) * e ** (-max(0, 0.1 * x))))

f_eval = np.zeros(N)
for idx, i in enumerate(x):
    f_eval[idx] = f(i)

# 设置坐标轴样式
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('zero')  # 此处为核心修正点
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')

# 绘制函数曲线
plt.plot(x,f_eval, 'r')

# 显示图形
plt.show()

内容的提问来源于stack exchange,提问作者knowledge_seeker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 18:50:26