Python 3.x Python matplotlib无法在椭圆曲线y^2+;x^3+;x^2=0

Python 3.x Python matplotlib无法在椭圆曲线y^2+;x^3+;x^2=0,python-3.x,cryptography,elliptic-curve,Python 3.x,Cryptography,Elliptic Curve,我正在使用下面的代码绘制ECC曲线y^2+x^3+x^2=0 将numpy导入为np 将matplotlib.pyplot作为plt导入 输入数学 def main(): 图=plt.图() ax=图添加_子批次(111) y、 x=np.ogrid[-2:2:1000j,-2:2:1000j] 等高线(x.ravel(),y.ravel(),功率(y,2)+功率(x,3)+功率(x,2),[0],颜色='red') ax.grid() plt.show() 如果uuuu name uuuuuu

我正在使用下面的代码绘制ECC曲线
y^2+x^3+x^2=0

将numpy导入为np
将matplotlib.pyplot作为plt导入
输入数学
def main():
图=plt.图()
ax=图添加_子批次(111)
y、 x=np.ogrid[-2:2:1000j,-2:2:1000j]
等高线(x.ravel(),y.ravel(),功率(y,2)+功率(x,3)+功率(x,2),[0],颜色='red')
ax.grid()
plt.show()
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
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)
这将改变整个情节。或者,可以单独移动隔离点周围的区域(通过在隔离点周围(0,0)处添加第二个
等高线
调用和一个小的x,y网格)。这并没有改变其余的


似乎没有显示由单个点组成的轮廓。一种解决方法是显式绘制点:
plt.plot(0,0,color=“red”,marker=“o”,zorder=10,markersize=2.5)
。或者,轮廓可以稍微移动,例如,移动到
z=0.0002
(而不是
z=0
),这实际上不会改变轮廓形状(但显示单个点)。另一种变体是将点显示为单独的轮廓,并仅移动此轮廓(然后保证其余轮廓保持不变)。@Topaco我已经查看了ogrid点,但未列出
0,0
。是的,我想我自己来指出这一点,但是,这会误导我和其他人。对于这条曲线,我们知道有一个acnode,如果我们不知道呢。怎样才能画出更可靠的曲线。我增加了
j
,这也没用。我想我不知道如何设置
z=0.0002
。我还尝试选择步长,以便包括点0,0,例如1001j。但这并没有解决问题。当然,最好的解决方案是应用程序以某种方式自己指示这些点。也许有这样一个选项(库有很多参数),但我没有找到设置(但是,我也不太了解这个库)。也可以使用遮罩数组,即遮罩相关点,并在显示时隐式标记。但同样,你需要已经知道这些点,这不是你想要的(对于一个点来说也不是必要的)。@Topaco使用了绘图,仅供参考。