如何在matplotlib中绘制多个函数?

时间:2017-12-26 15:04:48

标签: python python-3.x matplotlib

我有以下代码:

def f(x):
    return x

def g(x):
    return x*x

from math import sqrt
def h(x):
    return sqrt(x)

def i(x):
    return -x

def j(x):
    return -x*x

def k(x):
    return -sqrt(x)

functions = [f, g, h, i, j, k]

现在我试图绘制这些功能。

我试过

plt.plot(f(x), g(x), h(x))

但是我收到以下错误:

  

TypeError:只能将length-1数组转换为Python标量

我认为这是因为我使用的是有两个解决方案的平方根。但实际上,我正在尝试做类似的事情:

plt.plot(*functions)

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

math.sqrt仅接受标量值。 使用numpy.sqrt计算列表或NumPy数组中每个值的平方根:

In [5]: math.sqrt(np.array([0,1]))
TypeError: only length-1 arrays can be converted to Python scalars

In [6]: np.sqrt(np.array([0,1]))
Out[6]: array([ 0.,  1.])
import numpy as np
import matplotlib.pyplot as plt

def f(x):
    return x

def g(x):
    return x*x

def h(x):
    return np.sqrt(x)

def i(x):
    return -x

def j(x):
    return -x*x

def k(x):
    return -np.sqrt(x)

x = np.linspace(0, 1, 100)
functions = [f, g, h, i, j, k]
for func in functions:
    plt.plot(func(x), label=func.__name__)
plt.legend(loc='best')
plt.show()

enter image description here