Упрощенный способ печати жирным шрифтом строковой переменной в matplotlib - PullRequest
0 голосов
/ 21 марта 2019

Сегодня у меня есть очень специфическая проблема: я хочу напечатать строковую переменную внутри функции, используя 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, это интерпретируется как символ scape и приносит 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 Ответ

2 голосов
/ 21 марта 2019

При написании документов на LaTeX я использую \;, чтобы поставить пробел в математическом режиме.Это также работает здесь.

plt.text(0,0,r'String is $\bf{{{}}}$'.format(var.replace(' ', r'\;')))

Я предлагаю использовать str.format() вместо конкатенации ваших строк, потому что это сделает ваши намерения более ясными при следующем просмотре.

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