如何在Python中将数组的元素格式化为乳胶格式为标题/标签?

问题描述 投票:0回答:1

我有一个数字数组,我希望它的元素可以作为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.

python-3.x string matplotlib latex
1个回答
0
投票

你怎么说?

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,而数字则编码为普通测试(不是美元)。

您会找到有关使用的格式语句here的更多信息。

注意:您应将Nums替换为nums。大写的变量用于类。阅读PEP8 Style指南以获取更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.