代码之家  ›  专栏  ›  技术社区  ›  peter.petrov

在二维平面上用python绘制y=f(x)的图形

  •  -3
  • peter.petrov  · 技术社区  · 6 年前

    我想知道怎么做。

    我在网上找到的所有例子都要求我首先生成点/对(x,y)的列表,然后绘制这些对。

    但我不太想这样…有图书馆/模块可以让我:

    1. 提供x的间隔;
    2. y(y=f(x))的公式/函数;
    3. …也可以指定要可视化的平面的哪个部分

    让图书馆画出y的图形。

    我想应该有办法做到这一点,因为这看起来一点也不复杂。我觉得这是很标准的事情。

    例子:
    说我想策划 y = sqrt(x*(1-x)) 对于 x 在里面 [0,1] …但在600x400屏幕区域显示此图形(适当缩放)。我该怎么做?

    2 回复  |  直到 6 年前
        1
  •  1
  •   ImportanceOfBeingErnest    6 年前

    因为这个问题是用matplotlib标记的,所以这里是如何完成的;例如,在区间[-3,3]中,plot y=f(x)=x^2。

    import numpy as np
    import matplotlib.pyplot as plt
    
    interval = -3,3
    f = lambda x: x**2
    
    x = np.linspace(*interval, 301)
    plt.plot(x, f(x))
    
    plt.show()
    

    enter image description here

        2
  •  1
  •   Heath Raftery    6 年前

    您不断看到生成点的建议的原因是,为了在计算机屏幕上绘制曲线,必须生成一组点来确定要设置的像素。作为一个人,我们倾向于认为函数的图形是基于函数的。对于一台电脑来说,它需要知道屏幕上的每一点,这一点是否是功能的一部分。屏幕只是一个像素的小数组。为了让计算机知道要设置哪个像素,它必须知道它是否在曲线上。最简单的方法是生成曲线上的一组像素,也就是说,创建满足y=f(x)的点(x,y)。

    任何绘制曲线的库都将生成点。这一步变得非常简单,以至于大多数绘图库都希望您已经完成了这一步。图书馆这样做没什么意义,因为区别只相当于:

    plt.plot(xvals, f(xvals))
    

    比较对象:

    yvals = f(xvals)
    plt.plot(xvals, yvals)