等高线数据 (X,Y) 在 matplotlib 的连接顺时针路径中排序吗?

are contour data (X,Y) ordered in a connected clockwise path in matplotlib?

如题:

pl = plt.contour(X,Y,Z,levels=[0]) 
paths = pl.allsegs

我想知道路径中的数据点是如何排序的。具体是顺时针方向,逆时针方向w.r.t。指导中心?

我问的原因是因为 matplotlib.pyplot 不知道环面拓扑,其中边被标识为相同。圆环上的连接路径在开放式二维 space 上看起来是断开的。我想利用路径数据集将看似不连贯的线段粘合到环面流形上。

我通过以下步骤解决了这个问题:

  1. 利用圆环结构,即 Z[0,:] = Z[N,:], Z[:,0] = Z[:,M],其中 (N ,M) 是矩阵的线性维度。

  2. 从给定水平 z0 的等高线图中找到所有段:

    pl = plt.contour(X,Y,Z,levels=[z0]) 分段 = pl.allsegs[0]

  3. segs[i] 包含给定轮廓的坐标,其两个端点: (1) 相同,则 segs[i] 是 X 和Y. (2) 不同,因此必须终止于域的四个边缘之一。在这种情况下,必须至少存在另一个开放轮廓,其端点与当前开放轮廓pair-up。这对识别是通过计算它们在圆环上的距离来实现的,圆环上的距离定义为 |r1-r2|、|r1-r2 +/- period_along_x|、|r1-r2 +/- [=52 中的最小值=]|

  4. 最终,数值算法归结为识别闭合轮廓以及识别满足圆环拓扑的匹配端点对。

三个示例解决方案如附图所示。

四个开放轮廓,但它是环面上的一个轮廓,其中端点按颜色识别为成对

两条闭合等高线,其中每条等高线的两个端点相同