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

调整X轴刻度范围后Matplotlib绘图异常问题咨询

问题分析与解决方案

你的问题核心是混淆了「坐标轴刻度显示调整」和「自变量取值范围改变」,具体问题出在:

你生成的t2是原t1的100倍,但f(t1)对应的是t1(0到1区间)的函数值——这相当于把原曲线横向拉伸了100倍,而非让X轴覆盖0到100的自变量取值。比如原t1=0.5对应f(0.5)=2,你现在把这个点放到了X轴的50位置,但实际上当X轴为50时,函数值应该是f(50)=1/(1-50)=-1/49,这才是正确的对应关系。

两种正确做法

1. 真正让自变量覆盖0-100(绘制完整函数曲线)

如果需求是绘制t从0到100时的函数图像,需要直接生成该范围的自变量数组,再计算对应函数值(注意避开t=1这个奇点,否则会出现无穷大值导致绘图异常):

import numpy as np
import matplotlib.pyplot as plt

def f(t):
    return 1/(1-t)

def analytic_plot():
    # 生成0到99.99的自变量数组,步长0.01,避开t=1
    t2 = np.arange(0, 99.99, 0.01)
    plt.figure()
    plt.plot(t2, f(t2))
    plt.xlim(0, 100)  # 强制设置X轴显示范围为0-100
    plt.show()

analytic_plot()

2. 仅调整X轴刻度标签(自变量仍为0-1)

如果需求只是把原图表的X轴刻度显示为0-100(实际自变量还是0到1,仅刻度文字放大100倍),无需修改自变量,直接调整刻度标签即可:

import numpy as np
import matplotlib.pyplot as plt

def f(t):
    return 1/(1-t)

def analytic_plot():
    t1 = np.arange(0, 1, 0.01)
    plt.figure()
    plt.plot(t1, f(t1))
    # 修改X轴刻度:原刻度位置不变,标签改为乘100后的数值
    ticks = np.arange(0, 1.1, 0.2)  # 原刻度位置:0,0.2,0.4,...,1.0
    plt.xticks(ticks=ticks, labels=[str(int(x*100)) for x in ticks])
    plt.xlim(0, 1)
    plt.show()

analytic_plot()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:35:40