如何使用matplotlib在函数图上绘制点?

时间:2019-03-14 14:56:56

标签: python matplotlib

我有

def f(x):
    return (x**2 / 10) - 2 * np.sin(x)


def plot_fn():
    x = np.arange(-10, 10, 0.1)
    fn = f(x)

    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)

    # Move left y-axis and bottim x-axis to centre, passing through (0,0)
    ax.spines['left'].set_position('center')
    ax.spines['bottom'].set_position('center')

    # Eliminate upper and right axes
    ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none')

    # Show ticks in the left and lower axes only
    ax.xaxis.set_ticks_position('bottom')
    ax.yaxis.set_ticks_position('left')

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

我也想在图形上绘制一些点。例如,当x为0时,y为-4.49。因此,我想绘制一个x,y点的列表。我该如何在同一地块上这样做?

2 个答案:

答案 0 :(得分:1)

您可以在函数调用参数中添加点:

def plot_fn(xpoints=None, ypoints=None):
   #...your code before plt.show
   if x is not None:
       ax.plot(x_points , y_points, 'go')
   plt.show()

plot_fn([0], [-4.99])

答案 1 :(得分:1)

如果要在函数中绘制曲线后稍后再添加其他点,可以从图中返回轴实例,然后在以后使用它进行绘制。以下代码对此进行了解释

def plot_fn():
    x = np.arange(-10, 10, 0.1)
    fn = f(x)

    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)

    # Your spines related code here
    # ........

    ax.plot(x, fn)
    return ax

ax_ = plot_fn()

x_data = [0, 1]
y_data = [-4.49, 3.12]
ax_.scatter(x_data, y_data, c='r')
plt.show()

enter image description here