рисовать несколько полигонов из кадра данных - PullRequest
0 голосов
/ 18 сентября 2018

Я хочу создать простую карту для своих магазинов, показывающую размер всех различных кассовых чеков.У меня есть 3 разных типа до.Один имеет размер 4, а другие 2 имеют размер 1.

например,
Till1 - 4
Till2 - 1
Till3 - 1

Я создал таблицу согласноследующее:

до размера полигона
до1 4 [[0,1], [0,5], [1,5], [1,1]]
до 2 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 () объекта без размера

Я думаю, что он читается как строка, и мне нужно как-то передать отдельные части.Я попытался использовать 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()

1 Ответ

0 голосов
/ 19 сентября 2018

Похоже, когда я определял его, это была строка, а не список.

Поэтому я изменил:

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)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...