import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-3, 3, 50)
y = 2 * x + 1
plt.figure(figsize=(8, 5))
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
# 绘制特定散点
x0 = 1
y0 = 2 * x0 + 1
# 绘制散点图
plt.scatter(x0, y0, s=50, c='b')
# 绘制散点处垂直于x轴的虚线
plt.plot([x0, x0], [0, y0], color='k', linestyle='--', linewidth=2)
# 添加标注
# xycoords='data'基于数据的值选标注的位置
# xytext = (+30, -30)和 textcoords = 'offset points' 对标注位置的描述
# arrowprops 对箭头类型的一些设置
plt.annotate(r'$2x+1=%s$' % y0, xy=(x0, y0), xycoords='data', xytext=(+30, -30), textcoords='offset points',
fontsize=16, arrowprops=dict(arrowstyle='->', connectionstyle='arc3,rad=.2'))
plt.plot(x, y)
plt.show()