NameError:未定义x

时间:2014-04-21 13:53:46

标签: python matplotlib

我试图制作一个简单的绘图功能plot2d

def plot2d(xmin,xmax,func): 

    x=np.linspace(xmin, xmax, num=50)    

    plt.plot(x,func)
    plt.show()

这个想法是你输入变量' func'就x而言,如x ** 2。

编辑* 这是错误:

>>> plot2d(-10,10, x**2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined

编辑** 我认为问题在于,当你第一次调用函数时,linspace x还没有被创建。这很有效:

import numpy as np
import matplotlib.pyplot as plt

def plot2d(xmin,xmax): 
x=np.linspace(xmin, xmax, num=50)    

func=input('Define fucntion: ')
plt.plot(x,func)
plt.show()

2 个答案:

答案 0 :(得分:4)

您可能想了解lambda。更改代码就足够了:

import numpy as np
import matplotlib.pyplot as plt

def plot2d(xmin,xmax,func): 

    x=np.linspace(xmin, xmax, num=50)    

    plt.plot(x,func(x)) #func -> func(x)
    plt.show()

#pass a unnamed lambda as a param: 
plot2d(-10, 10, lambda x: x*x)

答案 1 :(得分:0)

from pylab import *

def plot2d(xmin, xmax, func):
    x=np.linspace(xmin,xmax,num=50)
    y=func(x)
    plot(x,y)
    show()

def func(x):
    y=x**2
    return y

plot2d(0,10,func)

结果:

enter image description here