python - Matplotlib 多边形补丁不使用 pandas df 中的 xy 列表进行绘制

标签 python pandas matplotlib patch

我想绘制一些从图表中数字化的形状,并使用它们对我的数据进行分类(它们在 XY 中绘制),但我在第一个障碍上就失败了!

我想要绘制为形状的“字段”的示例如下:

The red shape is what I want to plot

这是我到目前为止的代码:

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.patches import Polygon

df = pd.read_csv("FieldTest.csv") # the data (80 points)
x, y = df["X"], df["Y"] # x y coordinates
points = np.column_stack((x,y))

poly = Polygon(points, ec='k')
fig,ax = plt.subplots(1)
ax.add_patch(poly)
plt.show()

但这会返回一个空白图:

it's blank!

最终的图形有 10 个这样的多边形,我计划使用 contains_point 函数来评估某个点是否位于多边形内。但一旦我能弄清楚如何首先绘制多边形,这就是接下来的步骤......

Here's Pastebin上的数据

更新 - simonp2207解决了这个问题,我按顺序对点进行了排序:

enter image description here

最佳答案

您没有看到显示的多边形的唯一原因是因为 matplotlib 似乎没有自动缩放补丁对象的轴。因此,我建议您自己自动缩放轴,例如:

ax.set_xlim(min(x), max(x))
ax.set_ylim(min(y), max(y))

但是,有一点警告。您的多边形不是规则的,因为提供给 Polygon 类的点的顺序是按 x 坐标排序的。对于凸多边形,您可以按点与多边形中心坐标的角度对点进行排序,以便从顶点到顶点的路径在多边形周围形成整齐的边界。然而,在非凸多边形中,我不完全确定这成立!

关于python - Matplotlib 多边形补丁不使用 pandas df 中的 xy 列表进行绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64372065/

相关文章:

python - 在 python 中实现树结构的最佳方法是什么

python - 在迭代 pandas 数据框时更新它的更好方法

python - 为什么导入csv文件时要使用infer_datetime_format?

python - 使用 twinx 时控制跟踪器

Python -- matplotlib 椭圆曲线

python - Pandas pivot_table 的更快替代品

Windows : Why does this not work? 上的 Python 管道

python - matplotlib 将 x 轴上的刻度线命名为 1、2、4、8、16 等

python - 确定一个范围是否在另一个范围内

python - matplotlib 堆积面积图中的动态标签