Как получить координаты формы в древовидной карте matplotlib? - PullRequest
1 голос
/ 15 марта 2020

У меня есть рабочая карта дерева, и мне нужно получить координаты каждой фигуры этой карты дерева, чтобы, например, после этого поместить их в Geo JSON. Есть ли какая-нибудь функция, чтобы помочь мне с этим, или я буду получать все координаты из SVG-версии этой древовидной карты?

1 Ответ

0 голосов
/ 15 марта 2020

С ax = squarify.plot(...), ax.patches содержит список Прямоугольных патчей . Эти прямоугольники имеют такие функции, как get_x(). Координаты находятся в системе координат осей, которая кажется go от 0 до 100 в обоих направлениях x и y.

Когда вы рисуете больше элементов на одном графике, ax также может содержать другие элементы, поэтому вам может понадобиться отфильтровать их.

import matplotlib.pyplot as plt
import squarify  # pip install squarify (algorithm for treemap)

ax = squarify.plot(sizes=[13, 22, 35, 5], label=["group A", "group B", "group C", "group D"], color=['b','r','y','g'])

for rect in ax.patches:
    x, y, w, h = rect.get_x(), rect.get_y(), rect.get_width(), rect.get_height()
    c = rect.get_facecolor()
    print(f'Rectangle x={rect.get_x()} y={rect.get_y()} w={rect.get_width()} h={rect.get_height()} ')
plt.axis('off')
plt.show()

example plot PS: Чтобы получить соответствующие тексты, опять же предположим, что график содержит только древовидную карту:

for rect, text in zip(ax.patches, ax.texts):
    x, y, w, h = rect.get_x(), rect.get_y(), rect.get_width(), rect.get_height()
    c = rect.get_facecolor()
    t = text.get_text()
...