# coding:utf8
import matplotlib.pyplot as plt
import numpy as np
# 先获取一个图表
fig = plt.figure()
stringabc = "test"
# 设置x,y坐标轴的刻度显示范围
plt.xlim(-7, 7)
plt.ylim(-3, 7)
# 抛物线
X1 = np.linspace(-5, 5, 50) # -5 ~ 5 之间生成50个点
Y1 = 0.25 * X1 ** 2
plt.plot(X1, Y1, color='red', label=r'$y=\frac{x^2}{4}$')
# 直线
X2 = np.linspace(-5, 5, 50)
Y2 = X2
plt.plot(X2, Y2, color='green', linestyle='--', label=r'$y=x$')
# 黑色辅助线
plt.plot([4, 4], [4, 0], "k--")
# 抛物线与直线的交点处,标记1个黑点
plt.plot([4, 4], [4, 4], 'ko')
# 交点处的文本(annotate方式)
plt.annotate(r'$y=\frac{4^2}{4}=4$',
xy=(4, 4),
xycoords='data',
xytext=(+10, -30),
textcoords='offset points',
fontsize=12,
color="red",
arrowprops=dict(arrowstyle="->",
color="red",
connectionstyle="arc3,rad=.5"))
# text方式的文本
plt.text(5.2, 6.1, r'$y=\frac{x^2}{4}$', fontdict={'size': 16, 'color': 'r'})
plt.text(5.2, 5.1, r'$y=x$', fontdict={'size': 16, 'color': 'g'})
# 获取当前坐标轴gca即get current axis
ax = plt.gca()
# 去掉上、右二侧的边框线
ax.spines['top'].set_color('none')
ax.spines['right'].set_color('none')
# 将左侧的y轴,移到x=0的位置
ax.spines['left'].set_position(('data', 0))
ax.spines['bottom'].set_position(('data', 0))
# 调整x轴刻度(从-5到+5,正好11个点)
plt.xticks(np.linspace(-5, 5, 11))
# 调整y轴刻度
plt.yticks(np.linspace(-2, 6, 9))
# 给坐标轴加箭头
plt.arrow(0, 7, 0, 0, width=0.2, color="k", clip_on=False, head_width=0.2, head_length=0.2)
plt.arrow(7, 0, 0.01, 0, width=0.2, color="k", clip_on=False, head_width=0.2, head_length=0.2)
# 显示图例说明
plt.legend()
# 显示
plt.show()