Фон
Я переместил код, чтобы использовать только matplotlib , вместо pyplot (Причина в том, что он генерирует файлы png в многопроцессном режиме с фьючерсами , и pyplot в этом случае не безопасен для потоков / процессов).
Итак, я создаю фигуру и ось через matplotlib.Figure (), а не через pyplot.
У меня есть код, который рисует текстовую «таблицу» на фигуре, причем одна сторона выровнена по правому краю, а другая - влево. Чтобы сохранить постоянное расстояние между двумя сторонами, я ранее использовал get_window_extent()
на моем левом текстовом художнике, чтобы определить расположение правой стороны:
# draw left text at figure normalised coordinates, right justified
txt1 = figure.text(x, y, left_str,
ha='right', color=left_color, fontsize=fontsize)
# get the bounding box of that text - this is in display coords
bbox = txt1.get_window_extent(renderer=figure.canvas.get_renderer())
# get x location for right hand side offset from left's bbox
trans = figure.transFigure.inverted()
xr, _ = trans.transform((bbox.x1 + spacing, bbox.y0))
# draw right side text, using lhs's y value
figure.text(xr, y, right_str,
ha='left', color=right_color, fontsize=fontsize)
Проблема
Моя проблема в том, что теперь я не использую pyplot, приведенный выше код не работает, потому что figure.canvas.get_renderer()
не может вернуть средство визуализации, поскольку я его не установил, а просто использую Figure.savefig (path) чтобы сохранить мой файл, когда я закончу.
Так есть ли способ узнать размер ограничивающего прямоугольника Художника на Рисунке без установки средства рендеринга?
Судя по легенде, которая позволяет использовать линию ограничивающего прямоугольника с переменным размером текста, я предполагаю, что есть, но я не могу найти, как это сделать.
I ' Мы посмотрели на https://matplotlib.org/3.1.3/tutorials/intermediate/artists.html, а также попробовали matplotlib.artist.getp(txt1)
из приведенного выше, но не нашли никаких, казалось бы, полезных свойств.