Я хочу поместить две строки текста с некоторыми числами на график. Он отлично работает (пример 1).
Однако мне нужно, чтобы часть текста была надстрочной.
Когда я использую $^{text}$
, мой символ новой строки \n
становится больше, что нарушает мое выравнивание в сюжете, как в примере 2. Разница невелика, но этого достаточно, чтобы вызвать у меня проблемы.
Есть ли способ сохранить исходный интервал символа новой строки, а также включить форматирование надстрочного индекса? Я знаю, что есть несколько сообщений на похожие темы, но в основном они касаются использования необработанных строк, а не размера самой новой строки.
Простой и полный пример:
import matplotlib.pyplot as plt
n=100
#Example 1
plt.text(0,0.01,'Hello: '+str(n)+'\n'+'TEST')
#Example 2
plt.text(0.2,0.01,'Hello: '+str(n)+'\n'+r'TEST1$^{problem}$')
Вы можете установить linespacing
текста вручную.
import matplotlib.pyplot as plt
n=100
#plt.axhline(0.06, alpha=0.4)
text_kw = dict(verticalalignment = "baseline", fontsize=10)
#Example 1
plt.text(0,0.01,'Hello: '+str(n)+'\n'+'TEST', linespacing=1.5, **text_kw)
#Example 2
plt.text(0.2,0.01,'Hello: '+str(n)+'\n'+r'TEST1$^{problem}$', linespacing=1.2, **text_kw)
plt.show()
В этом случае значения 1,2 для текста с маттекстом и 1,5 для текста без маттекста дают хорошие результаты.
Однако в целом вам нужно будет адаптировать эти значения к реальному тексту, а также к используемому размеру шрифта.
Потрясающий. Идеальное решение, спасибо. Я должен был проверить ключевое слово межстрочного интервала. Это кажется забавным вариантом использования, но интересно, что mathtext меняет форматирование таким образом.
В качестве обходного пути можно было бы не использовать символ новой строки, а разбить каждый текстовый объект на два текстовых объекта, по одному на каждую строку. Тогда вы, очевидно, можете явно установить выравнивание.