为什么在我更改坐标时 Shapely 绘制两条线?

Why is Shapely plotting two lines when I change a coordinate?

我正在尝试了解 Shapely 的工作原理。

我可以用下面的代码画一条简单的线:

import matplotlib.pyplot as plt

A = Point(0,0)
B = Point(1,1)
AB = LineString([A,B])

plt.plot(AB)

但是当我改变坐标时:

A = Point(1,0)
B = Point(3,4)
AB = LineString([A,B])

plt.plot(AB)

Shapely 决定绘制两条线,这是我不理解的行为。

使用 Shapely 1.7.0

您使用 plt.plot() 不正确。

plt.plot()所做的是Plot y versus x as lines and/or markers.

在文档中,您可以看到由于调用 plot(AB) 只有 1 个参数,因此 AB 作为 Y 值传递。 在这种情况下,X 值是 Y 值数组中元素的索引。

与调用相同plt.plot([(1,0),(3,4)])。由于您有 2 个 Y 值元组,您将得到 2 个不同的行:[(0,1),(1,3)][(0,0),(1,4)]。 (注意x值是0和1,Y值对应元组的索引。)

您可以在输出的屏幕截图中看到,在第一种情况下,您还绘制了 2 条线。但在这些特定值的情况下,plt.plot([(0,0),(1,1)]) 将绘制同一条线两次。

如果您只想画一条从 A 点到 B 点的直线,您可以使用:

A = Point(1,0)
B = Point(3,4)
AB = LineString([A,B])

plt.plot(*AB.xy)

plt.show()