我有一个数字数组,我希望它的元素可以作为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()
我设法做到的最好是用乳胶风格写单位,并用“文本”风格写数字。 This is how it looks.
你怎么说?
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()
向您提供此输出
在您的解决方案中,您只是将GeV零件编码为laTex,而数字则编码为普通测试(不是美元)。
您会找到有关使用的格式语句here的更多信息。
注意:您应将Nums
替换为nums
。大写的变量用于类。阅读PEP8 Style指南以获取更多信息。