"""
心形函数:17*x^2 - 16*|x|*y + 17*y^2 = 225 :外心
"""
import numpy as np
import matplotlib.pyplot as plt
X=np.arange(-5.0,5.0,0.1)
Y=np.arange(-5.0,5.0,0.1)
x,y=np.meshgrid(X,Y)
f=17*x**2-16*np.abs(x)*y+17*y**2-225
"""
'8*x^2 - 9*|x|*y + 8*y^2 = 17': 内心
"""
A = np.arange(-2.5, 2.5, 0.05)
B = np.arange(-2.5, 2.5, 0.05)
i,j = np.meshgrid(A,B)
f = 8 * i ** 2 - 9 * np.abs(i) * j + 8 * j ** 2 - 17
#绘制画布
fig,ax=plt.subplots()
#大心,绘制登高线的函数contour
plt.contour(x,y,f,0,colors='r')
#小心,绘制登高线的函数contour
plt.contour(i,j,f,0,colors='r')
plt.title('My wife I love you')#图标题
plt.xlabel('I Love You 521')#x轴标签
plt.ylabel('I Love You 1314')#y轴标签
#注释标注YoYO
plt.annotate("YoYo",xy=(0,1.6),xytext=(-0.3,0.25),
arrowprops=dict(arrowstyle="->",facecolor='black'))
#注释标注CoCo
plt.annotate("CoCo",xy=(0,2.8),xytext=(-0.4,4),
arrowprops=dict(arrowstyle="->",facecolor='black'))
#斜线
lx=[-4,-2,0,2,4]
ly=[-4,-2,0,2,4]
plt.plot(lx,ly,"--",c="black")
#斜线的箭头
plt.annotate("",xy=(4,4),xytext=(3.9,3.9),
arrowprops=dict(arrowstyle="->",facecolor='black'))
#ax.set_xticks([])#隐藏x轴
#ax.set_yticks([])#隐藏y轴
plt.grid() #网格
plt.show()