Как построить точки на графике функции с помощью matplotlib? - PullRequest
0 голосов
/ 14 марта 2019

у меня

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 ]

1 голос
/ 14 марта 2019

Если вы хотите иметь возможность добавить дополнительные точки позже после построения кривой в функции, вы можете вернуть экземпляр оси из рисунка, а затем использовать его для построения графика.Следующий код объясняет это

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

1 голос
/ 14 марта 2019

Вы можете добавить точки в аргументы вызова функции:

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])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...