Сначала отключите отображение метки с помощью plot_coordinates()
:
ax = ca.plot_coordinates(X=X,ax=None,figsize=(6, 6),x_component=0,y_component=1,show_row_labels=False,show_col_labels=False)
Затем извлеките координаты столбцов и строк:
COLS=ca.column_coordinates(X).to_dict()
XCOLS=COLS[0]
YCOLS=COLS[1]
ROWS=ca.row_coordinates(X).to_dict()
XROWS=ROWS[0]
YROWS=ROWS[1]
Структуры XCOLS
, YCOLS
, XROWS
, YROWS
- словари со значениями, которые являются числами с плавающей точкой (координаты). Давайте объединим два словаря по оси X в один словарь по оси X, который я назову XGLOBAL
, то же самое для словарей по оси Y, в YGLOBAL
:
XGLOBAL={ k : XCOLS.get(k,0)+XROWS.get(k,0) for k in set(XCOLS) | set(XROWS) }
YGLOBAL={ k : YCOLS.get(k,0)+YROWS.get(k,0) for k in set(YCOLS) | set(YROWS) }
Теперь я просто применяю adjust_text()
как описано в документации:
fig = ax.get_figure()
texts=[plt.text(XGLOBAL[x],YGLOBAL[x],x,fontsize=7) for x in XGLOBAL.keys()]
adjust_text(texts,arrowprops=dict(arrowstyle='-', color='red'))
fig.savefig('newfigure.png')
И результат:
Обратите внимание, что во время генерации изображения был мгновенным без adjust_text
, это заняло около 40 секунд с adjust_text
.