使用替代字体时,Python图例标记位置会更改

时间:2014-03-20 17:02:17

标签: 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.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()

无论如何都要向上移动这些标记,ti与T的中间对齐?我尝试过使用一些\vspace命令,但它们不起作用。

1 个答案:

答案 0 :(得分:1)

我承认,它可能不是解决方案中最简洁或最狡猾的解决方案,但一个相对简单的想法是让图例略微透明,然后手工绘制图例标签。这意味着您在设置图例时必须详细了解(即指定线条,颜色,位置等),但它允许更多的灵活性。此外,渲染图像可能会稍微移动文本,使其与您在窗口中看到的不同,因此您可能需要稍微玩一些位置。

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()

enter image description here