[英]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.