Matplotlib Text Artist - как получить размер? (без использования pyplot) - PullRequest
1 голос
/ 28 мая 2020

Фон

Я переместил код, чтобы использовать только 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) из приведенного выше, но не нашли никаких, казалось бы, полезных свойств.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...