我正在使用下面的代码绘制ECC曲线 y^2+x^3+x^2 =0
import numpy as np
import matplotlib.pyplot as plt
import math
def main():
fig = plt.figure()
ax = fig.add_subplot(111)
y, x = np.ogrid[-2:2:1000j, -2:2:1000j]
ax.contour(x.ravel(), y.ravel(), pow(y, 2) + pow(x, 3) + pow(x, 2) , [0],colors='red')
ax.grid()
plt.show()
if __name__ == '__main__':
main()
输出是
预期的图像是这个
如我们所见,未绘制(0,0)处的孤立点。有解决这个问题的建议吗?
如评论中已经提到的,似乎没有将单个点显示为轮廓。最好的解决方案是,如果应用程序本身以某种方式指示这些点。也许库允许这样做,但是我还没有找到方法,因此在这里显示了两种解决方法:
选项1:
在(0,0)处的隔离点可以明确标记:
ax.plot(0, 0, color="red", marker = "o", markersize = 2.5, zorder = 10)
在多点的情况下,掩盖阵列是一个不错的选择,在这里。
选项2:
该图可以在z = 0周围略有变化,例如z = 0.0002:
z = pow(y,2) + pow(x, 2) + pow(x, 3)
ax.contour(x.ravel(), y.ravel(), z, [0.0002], colors='red', zorder=10)
这将移动整个情节。或者,可以仅移动孤立点周围的区域(通过contour
在孤立点(0,0)周围添加带有小的x,y网格的第二个调用)。这不会改变其余部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句