【问题标题】:Why is Shapely plotting two lines when I change a coordinate?为什么当我更改坐标时,Shapely 会绘制两条线?
【发布时间】:2020-02-08 04:43:25
【问题描述】:

我正在尝试了解 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

【问题讨论】:

标签: python matplotlib shapely


【解决方案1】:

您错误地使用了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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-12
    • 2023-02-11
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多