Python: 根据相反的地理坐标绘制区域
Python: Drawing an area based on opposite geographic coordinates
我尝试绘制并连接矩形中的点,但我做错了。
我有这样的坐标向量:
x = [6.2372045620000005, 6.237194762000001, 6.237194762000001, 6.2372045620000005]
y = [51.071833453, 51.071835828999994, 51.071833453, 51.071835828999994]
首先,我绘制点数据:
plt.scatter(x, y, color = 'blue')
然后,我尝试在点之间添加线,这样就形成了一个矩形。不幸的是,下面这个不能正常工作。
plt.scatter(x, y, color = 'blue')
plot.plot(x,y)
你知道我做错了什么吗?这当然是一件简单的事情,但我坚持了下来..
感谢您的帮助和评论。
通常假设任何形状的坐标都已经排序。
如果您确信自己有一个矩形(所有角都是正确的,而不是某些四边形),您可以使用 x 和 y 坐标的 min/max 值来获得正确的角点。给定您已经在 post:
中定义的坐标
import matplotlib.patches as patches
import matplotlib.pyplot as plt
xmin = min(x)
xmax = max(x)
xsize = xmax - xmin
ymin = min(y)
ymax = max(y)
ysize = ymax - ymin
使用 Matplotlib,您可以使用 Rectangle
补丁,例如:
fig, ax = plt.subplots(dpi=86)
ax.scatter(x, y, color='blue')
rect = patches.Rectangle(
(xmin, ymin), xsize, ysize,
lw=2, edgecolor='r', facecolor='none',
)
ax.add_patch(rect)
或 Polygon
补丁,适用于任意形状。这两种方法都适用于这种情况:
points = [
(xmin, ymin),
(xmax, ymin),
(xmax, ymax),
(xmin, ymax),
]
poly = patches.Polygon(
points, lw=2, edgecolor='r', facecolor='#ff000011', closed=True,
)
ax.add_patch(poly)
如果您确实有一些不太规则的形状,例如四边形,计算凸包可能有助于获得正确的坐标顺序。参见示例:
Convex hull of 4 points
我尝试绘制并连接矩形中的点,但我做错了。
我有这样的坐标向量:
x = [6.2372045620000005, 6.237194762000001, 6.237194762000001, 6.2372045620000005]
y = [51.071833453, 51.071835828999994, 51.071833453, 51.071835828999994]
首先,我绘制点数据:
plt.scatter(x, y, color = 'blue')
然后,我尝试在点之间添加线,这样就形成了一个矩形。不幸的是,下面这个不能正常工作。
plt.scatter(x, y, color = 'blue')
plot.plot(x,y)
你知道我做错了什么吗?这当然是一件简单的事情,但我坚持了下来..
感谢您的帮助和评论。
通常假设任何形状的坐标都已经排序。
如果您确信自己有一个矩形(所有角都是正确的,而不是某些四边形),您可以使用 x 和 y 坐标的 min/max 值来获得正确的角点。给定您已经在 post:
中定义的坐标import matplotlib.patches as patches
import matplotlib.pyplot as plt
xmin = min(x)
xmax = max(x)
xsize = xmax - xmin
ymin = min(y)
ymax = max(y)
ysize = ymax - ymin
使用 Matplotlib,您可以使用 Rectangle
补丁,例如:
fig, ax = plt.subplots(dpi=86)
ax.scatter(x, y, color='blue')
rect = patches.Rectangle(
(xmin, ymin), xsize, ysize,
lw=2, edgecolor='r', facecolor='none',
)
ax.add_patch(rect)
或 Polygon
补丁,适用于任意形状。这两种方法都适用于这种情况:
points = [
(xmin, ymin),
(xmax, ymin),
(xmax, ymax),
(xmin, ymax),
]
poly = patches.Polygon(
points, lw=2, edgecolor='r', facecolor='#ff000011', closed=True,
)
ax.add_patch(poly)
如果您确实有一些不太规则的形状,例如四边形,计算凸包可能有助于获得正确的坐标顺序。参见示例:
Convex hull of 4 points