为什么在我更改坐标时 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()
我正在尝试了解 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()