如何绘制用def定义的函数?

时间:2016-04-22 07:08:09

标签: python-2.7 matplotlib plot

我有一个功能

np.sin(x / 2.) * np.exp(x / 4.) + 6. * np.exp(-x / 4.)

我可以使用以下代码绘制它:

x = np.arange(-5, 15, 2)
y = np.sin(x / 2.) * np.exp(x / 4.) + 6. * np.exp(-x / 4.)
plt.plot(x, y)
plt.show()

但如果我定义函数绘图不起作用:

rr = np.arange(-5, 15, 2)

def y(o): 
    return np.sin(o / 2.) * np.exp(o / 4.) + 6. * np.exp(-o / 4.)

def h(b):
    return int(y(b))

plt.plot(rr, h)
plt.show()

为什么会发生这种情况,如何更改代码以绘制函数?

2 个答案:

答案 0 :(得分:8)

请改为尝试:

import numpy as np
import matplotlib.pyplot as plt

rr = np.arange(-5, 15, 2)

def y(o): 
    return np.sin(o / 2.) * np.exp(o / 4.) + 6. * np.exp(-o / 4.)

plt.plot(rr, y(rr).astype(np.int))
plt.show()

答案 1 :(得分:2)

匈奴的答案很好。

但是,如果你非常具体地使用两个函数定义,那么试试这个:

def y(o): 
    return np.sin(o / 2.) * np.exp(o / 4.) + 6. * np.exp(-o / 4.)
def h(b):
    l = []
    for i in b:
        l.append(int(y(i)))
    return l
rr = np.arange(-5, 15, 2)
plt.plot(rr, h(rr))
plt.show()

要回答代码无效的原因,当您调用函数' h'时,您没有传递任何参数,因此返回函数的函数定义或内存位置指针。即使你已经将rr传递给h,也没有处理h将其转换为可迭代的。