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