#python #matplotlib #text
#python #matplotlib #текст
Вопрос:
Сегодня у меня возникла очень специфическая проблема: я хочу напечатать строковую переменную внутри функции, используя plt.text()
жирный шрифт. Я чувствую, что использую графические возможности Python до предела при смешивании mathtext
с обычным синтаксисом.
Итак, важная часть функции выглядит следующим образом:
def graph_text(var):
string0=f'String is:' r"$bf{" var "}$"
plt.text(string0)
Дело в том, var
что некоторые строки могут содержать от одного до трех слов. По умолчанию в mathtext
строки объединены, поэтому для var='the dog'
этого было бы напечатано ‘String is thedog‘.
Затем я попытался использовать split()
и '/'.join()
, вот так:
string0=f'String is:' r"$bf{" ('/'.join(var.split())) "}$"
( ‘/’ — это пробел в mathtext
, но поскольку здесь мы находимся за пределами mathtext
синтаксиса, это интерпретируется как символ области видимости и приносит SyntaxError
. Итак, единственное решение, которое я смог найти, это вручную сделать это следующим образом:
if len(var)==1:
string0=f'String is:' r"$bf{" var.split()[0] "}$"
elif len(var)==2:
string0=f'String is:' r"$bf{" var.split()[0] r" $bf{" var.split()[1] "}$"
else:
(insert same code but for three words)
Итак, вы знаете, есть ли способ сделать это без учета каждого возможного случая? Спасибо
Ответ №1:
При написании документов LaTeX я использую ;
пробел в математическом режиме. Похоже, здесь это тоже работает.
plt.text(0,0,r'String is $bf{{{}}}$'.format(var.replace(' ', r';')))
Я предлагаю использовать str.format()
вместо объединения ваших строк, потому что это прояснит ваше намерение при следующем просмотре.
Комментарии:
1. Почти тот же ответ, который я бы написал, просмотрев, например, этот сайт: overleaf.com/learn/latex/Spacing_in_math_mode
2. Только один вопрос, почему вы используете тройные скобки (
{{{}}}
) вместо простой скобки?3. @juan-c
{}
используется для обозначения того, что что-то будет заменено на.format()
. Когда вам буквально нужно, чтобы{
сохранялась в вашей конечной строке, вы избегаете ее, удваивая с помощью{{
. Взгляните на официальные документы и на этот полезный веб-сайт