我有
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
点的列表。我该如何在同一地块上这样做?
答案 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()