【问题标题】:NameError: x is not definedNameError: x 未定义
【发布时间】:2014-06-05 14:28:42
【问题描述】:

我正在尝试制作一个简单的绘图函数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()

【问题讨论】:

  • 告诉我们你如何称呼你的plot2d,并显示错误的回溯。
  • 你不应该将x 作为参数传递给func吗?

标签: python matplotlib


【解决方案1】:
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)

结果:

【讨论】:

  • 我希望能够定义任何函数。 TBH 我正在寻找类似于数学绘图函数的东西。
  • @user3556814,从用户那里获取函数作为输入偏离了这个线程的范围。您可能想参考stackoverflow.com/questions/7719466/…
【解决方案2】:

您可能想了解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)

【讨论】:

    猜你喜欢
    • 2022-09-30
    • 2019-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多