【问题标题】:draw multiple polygons from a dataframe从数据框中绘制多个多边形
【发布时间】:2018-09-18 16:15:42
【问题描述】:

我想为我的商店创建一个简单的地图,显示所有不同结帐的大小。我有 3 种不同的直到类型。一个是 4 号,另外 2 个是 1 号。

例如
Till1 - 4
Till2 - 1
Till3 - 1

我已经按照以下方式创建了一个表:

直到大小多边形
Till1 4 [[0,1],[0,5],[1,5],[1,1]]
Till2 1 [[1,1],[1,2],[2,2],[2,1]]

ETC

运行此代码:

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()

【问题讨论】:

  • 如果你自己创建了这个 html 表,你可以简单地创建一个坐标列表吗?
  • 看起来您需要展平点数组,即从 [[1,1],[1,5],[2,5],[2,1]][1,1,1,5,2,5,2,1]

标签: python matplotlib polygon


【解决方案1】:

当我定义它时,它看起来像是一个字符串而不是一个列表。

所以我改变了:

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)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    相关资源
    最近更新 更多