Python 图例标记位置在使用替代字体时变化
为了符合期刊的排版要求,我想在我的图表中使用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的底部对齐)。
import matplotlib.pyplot as plt
import numpy as np
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,
label='$T^*_s$')
plt.plot(x, y,
label='$T^*_g$')
plt.legend()
plt.show()
有没有办法把这些标记向上移动,让它们与字母T的中间对齐呢?我试过一些\vspace
命令,但效果不太好。
1 个回答
1
我承认这可能不是最完美或者最符合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()