使用替代字体时,Python图例标记位置会发生变化

使用替代字体时,Python图例标记位置会发生变化,python,matplotlib,Python,Matplotlib,为了遵守期刊排版,我想在我的数字中使用Bitstream Charter。到目前为止,这一切都很完美,但我发现在使用下标和上标时有一个小问题 下面将按预期生成图例,其中标记(线)与标签垂直居中 import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 1, 10) y = x**2 plt.figure(dpi=200) plt.plot(x, y, label='$T^*_s$') plt.

为了遵守期刊排版,我想在我的数字中使用Bitstream Charter。到目前为止,这一切都很完美,但我发现在使用下标和上标时有一个小问题

下面将按预期生成图例,其中标记(线)与标签垂直居中

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 1, 10)
y = x**2

plt.figure(dpi=200)
plt.plot(x, y,
         label='$T^*_s$')
plt.plot(x, y,
         label='$T^*_g$')
plt.legend()
plt.show()

下面生成一个图例,其中标记向下移动(与T的底部对齐)


有没有办法将这些标记向上移动,ti与T的中间对齐?我尝试过使用一些
\vspace
命令,但它们不起作用。

我承认,这可能不是最灵巧或最具python风格的解决方案,但一个相对简单的想法是让图例稍微透明,然后用手将图例标签放进去。这意味着您在设置图例时必须更详细(即指定线条、颜色、位置等),但它允许更大的灵活性。此外,渲染图像可能会稍微移动文本,使其与您在窗口中看到的不同,因此您可能需要稍微调整一下位置

import matplotlib.pyplot as plt
import numpy as np
from pylab import *

x = np.linspace(0, 1, 10)
y = x**2

plt.rc('text', usetex=True)
plt.rc('text', **{'latex.preamble':
              '\\usepackage[bitstream-charter]{mathdesign}'})

plt.figure(dpi=200)
plt.plot(x, y, c='green')
line1 = Line2D(range(10), range(10), marker='_', color="blue")
line2 = Line2D(range(10), range(10), marker='_',color="green")
leg = plt.legend((line1,line2),('',''),numpoints=1, loc=1)
leg.get_frame().set_alpha(0.2)
plt.text(0.955, 0.925, "$T^*_s$")
plt.text(0.955, 0.865, "$T^*_g$")
plt.show()

我也遇到了同样的问题,如果保存图像(例如
savefig('img.pdf')
),则文本和标记将在保存的img中对齐。这是一个问题与后端显示不知何故。。。
import matplotlib.pyplot as plt
import numpy as np
from pylab import *

x = np.linspace(0, 1, 10)
y = x**2

plt.rc('text', usetex=True)
plt.rc('text', **{'latex.preamble':
              '\\usepackage[bitstream-charter]{mathdesign}'})

plt.figure(dpi=200)
plt.plot(x, y, c='green')
line1 = Line2D(range(10), range(10), marker='_', color="blue")
line2 = Line2D(range(10), range(10), marker='_',color="green")
leg = plt.legend((line1,line2),('',''),numpoints=1, loc=1)
leg.get_frame().set_alpha(0.2)
plt.text(0.955, 0.925, "$T^*_s$")
plt.text(0.955, 0.865, "$T^*_g$")
plt.show()