簡體   English   中英

從數據框中繪制多個多邊形

[英]draw multiple polygons from a dataframe

我想為我的商店創建一個簡單的地圖,顯示所有不同結帳的大小。 我有 3 種不同的直到類型。 一個是 4 號,另外 2 個是 1 號。

例如
直到 1 - 4
直到 2 - 1
直到 3 - 1

我按照以下內容創建了一個表:

直到大小多邊形
直到1 4 [[0,1],[0,5],[1,5],[1,1]]
直到2 1 [[1,1],[1,2],[2,2],[2,1]]

等等

運行此代碼:

df1.iloc[0]['polygon']

我得到 '[[0,1],[0,5],[1,5],[1,1]]'

然而,當我試圖把它變成一個多邊形時,它會掙扎:

Polygon(df1.iloc[0]['polygon'], True)

TypeError: len() of unsized object

我認為它將它作為一個字符串讀取,我需要以某種方式傳遞各個部分。 我試過使用 split 但它仍然是字符串列表而不是列表列表。

有任何想法嗎?

最終的代碼看起來類似於:

fig, ax = plt.subplots()
patches = []
num_polygons = len(df1)
for i in range(num_polygons):
    #polygon = Polygon([[1,1],[1,5],[2,5],[2,1]], True)
    polygon = Polygon(df1.iloc[0]['polygon'], True)
    patches.append(polygon)
p = PatchCollection(patches, cmap=matplotlib.cm.jet, alpha=0.4)
colors = 100*np.random.rand(len(patches))
p.set_array(np.array(colors))
ax.add_collection(p)
plt.ylim([0,10])
plt.xlim([0,10])
plt.show()

看起來我在定義它時,它是一個字符串而不是一個列表。

所以我改變了:

df1.iloc[i, df1.columns.get_loc('polygon')] = '({x},{y}) ({x},{y1}) ({x1},{y1}) ({x1},{y})'.format(x=x,y=y,x1=x+x1,y1=y+y1)

對此:

df1.iloc[i, df1.columns.get_loc('polygon')] = [(x,y),(x,y+y1),(x+x1,y+y1),(x+x1,y)]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM