Как разместить поля plt.text одно над другим? - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь добавить несколько строк текста на графике с одинаковыми координатами x , расположенными одна над другой. Проблема в том, что y максимальная шкала высока, поэтому, если я положу их буквально один над другим (поэтому y для 1-го значения у для 2-го значения + размер шрифта), они настолько близки, что их невозможно отличить друг от друга. Одним из решений является умножение разрыва на шкалу. Или найдите прямоугольник, который используется в предыдущей строке, и вычислите y , используя его. Но тогда они не будут рядом, если я увеличу картинку ... Какие-нибудь масштабируемые решения, пожалуйста? Текст как-то автоматически масштабируется, есть ли опция для пробелов / y по оси?

x = <my calculated x value>
y = 6 * (n - i - 1) # where n - amount of lines, i - index of current text line
text = plt.text(x, y, text_drops, fontsize=6)

Следующие 2 изображения показывают ту же часть графика - в реальном размере и в увеличенном масштабе.

Здесь показан фактический масштаб: высота одной ячейки составляет 50000

.

Scaled so y cell is 25 points high

Это увеличено, поэтому одна ячейка имеет высоту 25

Scaled so y cell is 25 points high

UPD: Привести предложение Joooeey в действие другим способом - сработало для меня:

x = <my calculated x value>
text = plt.text(x, 0, text_drops + i * '\n', fontsize=6) # where i - index of current  line

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете использовать одно текстовое поле, разделенное переносами строк:

lines = ['drop start at 125989msg/sec',
         'drop start at 126169msg/sec',
         'drop start at 126381msg/sec']
multiline = '\n'.join(lines) # put in line breaks
texts = plt.text(x, y, multiline, horizontalalignment='left', verticalalignment='left')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...