У меня есть очень простой вопрос: как сделать разрыв строки с matplotlib в python с помощью команды "annotate". Я попробовал "\" и "\n", но он не работает. И как это сделать для аннотации "Латекс" и для обычной текстовой аннотации?
Большое спасибо.
У меня есть очень простой вопрос: как сделать разрыв строки с matplotlib в python с помощью команды "annotate". Я попробовал "\" и "\n", но он не работает. И как это сделать для аннотации "Латекс" и для обычной текстовой аннотации?
Большое спасибо.
Что именно вы пробовали?
Вы случайно использовали исходную строку (например, r"whatever"
)?
'\n'
работает отлично, но если вы используете необработанную строку, чтобы избежать последовательности латекс, интерпретируемой как побег, она будет интерпретироваться как python как '\'
и 'n'
вместо новой строки.
В качестве примера:
import matplotlib.pyplot as plt
plt.annotate('Testing\nThis\nOut', xy=(0.5, 0.5))
plt.show()
С другой стороны, если мы используем необработанную строку:
import matplotlib.pyplot as plt
plt.annotate(r'Testing\nThis\nOut', xy=(0.5, 0.5))
plt.show()
Однако, если вам нужны оба варианта, рассмотрите следующий пример:
import matplotlib.pyplot as plt
a = 1.23
b = 4.56
annotation_string = r"Need 1$^\mathsf{st}$ value here = %.2f" % (a)
annotation_string += "\n"
annotation_string += r"Need 2$^\mathsf{nd}$ value here = %.2f" % (b)
plt.annotate(annotation_string, xy=(0.5, 0.5))
plt.show()
Что дает вам:
Ключ состоит в том, чтобы собрать строку заранее, используя +=
. Таким образом, вы можете иметь команды raw-string (обозначенные r
) и разрывы строк (\n
) в той же аннотации.
Вы можете использовать тройные кавычки, когда вы определяете строку аннотации, как в string="""some text"""
, так что фактический разрыв строки, который вы вводите в строке, будет интерпретироваться как разрывы строк на выходе. Вот пример, который включает латекс и печать некоторых числовых параметров из других частей вашего кода.
import matplotlib.pyplot as plt
I = 100
T = 20
annotation_string = r"""The function plotted is:
$f(x) \ = \ \frac{{I}}{{2}} \cos\left(2 \pi \ \frac{{x}}{{T}}\right)$
where:
$I = ${0}
$T = ${1}""".format(I, T)
plt.annotate(annotation_string, xy=(0.05, 0.60), xycoords='axes fraction',
backgroundcolor='w', fontsize=14)
plt.show()
Я добавил несколько "дополнительных":
r
вскоре перед открытием тройных цитат, чтобы облегчить интерпретатор LaTeX
двойные фигурные скобки {{}}
, поэтому команда .format()
и LaTeX не взаимодействуют друг с другом
xycoords='axes fraction'
, поэтому, чтобы указать позицию
строка с дробными значениями по ширине и
высота участкаbackgroundcolor='w'
, который помещает белую шатер вокруг
аннотация (удобно в случае совпадения с вашим сюжетом).Быстрые решения
plt.annotate("I am \n"+r"$\frac{1}{2}$"+"\n in latex math environment", xy=(0.5, 0.5))