Как мне отформатировать как латекс элемент массива в заголовок / метку в Python? - PullRequest
0 голосов
/ 02 октября 2019

У меня есть массив чисел, и я хочу, чтобы его элементы были названиями сюжетов на рисунке в Python. Я хочу отформатировать эти заголовки в стиле латекса.

Боюсь, это может быть простой вопрос, но я не видел ответа в другом месте. Я видел, что люди используют необработанные строки r '$ ... $' для латексных выражений, но я не смог применить их успешно, чтобы решить эту проблему.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import rc

#LaTeX font
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
rc('text', usetex=True) 

# Some example data to display
x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)

#The numbers I want as titles for the subplots
Nums = [0.01,0.10,0.30,0.75,1.00,2.00,10.0,12.0]

nrows=2
ncols=4
fig, ax = plt.subplots(nrows=2,ncols=4)

for row in range(nrows):
        for col in range(ncols):
                ax[row,col].set_title(repr(Nums[col+row*ncols]) + '$\\ \\mathrm{GeV}$')
                ax[row,col].plot(x, y)
plt.show()

Лучшее, что мне удалось сделать, - это написать единицы в стиле латекса, а числа в стиле «текст». Вот так это выглядит.

1 Ответ

0 голосов
/ 02 октября 2019

Что вы скажете по этому поводу?

import matplotlib.pyplot as plt
import numpy as np
from matplotlib import rc

#LaTeX font
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
rc('text', usetex=True) 

# Some example data to display
x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x ** 2)

#The numbers I want as titles for the subplots
Nums = [0.01,0.10,0.30,0.75,1.00,2.00,10.0,12.0]

nrows=2
ncols=4
fig, ax = plt.subplots(nrows=2,ncols=4)

for row in range(nrows):
        for col in range(ncols):
                #ax[row,col].set_title(repr(Nums[col+row*ncols]) + '$\\ \\mathrm{GeV}$')
                ax[row,col].set_title(r'${:.2f}\mathrm{{GeV}}$'.format(Nums[col+row*ncols]))
                ax[row,col].plot(x, y)
plt.show()

предоставив вам этот вывод

enter image description here

В вашем решении вы действительно закодированычасть GeV как laTex, а число было закодировано как обычный тест (не в долларах).

Более подробную информацию об используемом операторе формата можно найти здесь .

Примечание. : Вам следует заменить Nums на nums. Переменные с заглавной буквы используются для классов. Прочитайте руководство PEP8 Style для получения дополнительной информации.

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