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

使用Matplotlib绘制指定函数图形的问题求助

使用Matplotlib绘制指定函数图形的问题求助

嘿,我来帮你排查一下问题!你当前的代码画出来的图形和预期不符,主要是几个关键设置没调整对,我来帮你一步步修正:

  • x轴范围太宽,细节完全丢失:你用了range(0,1000),但这两个函数的交点其实在x≈0.43和x≈9.57附近(解二次方程x²=10x-4就能算出),把x范围拉到0-1000会让直线看起来几乎是水平的,抛物线直接飙升到右上角,完全看不到两者的交互细节。建议把x范围缩小到0-20,这样能清晰展示两个函数的走势和交点。

  • 对数刻度和y轴范围设置错误:你开启了plt.yscale('log')对数刻度,这会让线性函数的形态严重变形;同时plt.axis([0,1000, 1, 100000])把y轴下限设为1,忽略了直线y=10x-4在x<0.4时的负值部分,这也会让图形偏离预期。

  • 可选优化:用更平滑的x值:用range生成的整数x点会让曲线不够平滑,换成密集的浮点x值,图形会更美观。

下面是修正后的完整代码:

import matplotlib.pyplot as plt
import numpy as np

def plot_graph():
    # 生成0到20之间的100个均匀分布的x值,保证曲线平滑
    x = np.linspace(0, 20, 100)
    # 计算两个函数的y值(numpy支持向量运算,比列表推导式更简洁)
    y1 = 10 * x - 4
    y2 = x ** 2
    
    # 绘制两条曲线,保留你原来的颜色和标签
    plt.plot(x, y1, "r-", label="y=10x-4")
    plt.plot(x, y2, "g-", label="y=x²")
    
    # 设置合适的坐标轴范围,包含直线的负值区域
    plt.axis([0, 20, -5, 100])
    # 注释掉对数刻度,使用默认的线性刻度
    # plt.yscale('log')
    
    plt.legend(loc="lower right")
    plt.title('My first graph in Machine Learning class')
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.grid(True)
    # 加上plt.show()确保图形能正常显示(某些环境下需要显式调用)
    plt.show()

plot_graph()

如果不想依赖numpy,也可以用列表推导式生成小范围的x值,比如x = [i/10 for i in range(0, 201)],这样也能得到密集的x点,效果类似。

备注:内容来源于stack exchange,提问作者Maria_

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 16:00:30