Matplotlib多边形补丁未使用来自熊猫df

时间:2020-10-15 12:54:37

标签: 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

1 个答案:

答案 0 :(得分:1)

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

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

但是,请注意。您的多边形不规则,因为提供给Polygon类的点的顺序是按x坐标排序的。对于凸多边形,可以按点与多边形中心坐标的角度对点进行排序,以使从顶点到顶点的路径在多边形周围形成整洁的边界。但是,在非凸多边形中,我不确定这是否成立!