在pyplot图例中添加内部空间

时间:2016-05-20 18:36:56

标签: python text matplotlib legend

我想为一个图例辩护,使它左右对齐,以便等于对齐。例如,我有以下代码:

import numpy as np
import matplotlib.pyplot as plt

KEu = 100.
KEm = 50.
KEl = 5.
X   = np.linspace(1,10,10) 

fig = plt.figure()
ax = plt.subplot(111)
ax.plot(X,KEu*X,label='Maximum Energy = {0:6.2f} MeV'.format(KEu))
ax.plot(X,KEm*X,label='Median Energy  = {0:6.2f} MeV'.format(KEm))
ax.plot(X,KEl*X,label='Minimum Energy = {0:6.2f} MeV'.format(KEl))
ax.legend(loc='upper left')
plt.show()

我不知道如何添加情节,所以我将在下面给出一个书面例子:

-- Maximum Energy = 100.00 MeV  
-- Median Energy = 50.00 MeV     
-- Minimum Energy = 5.00 MeV  

引用似乎是必要的,否则SO认为它是格式不良的代码。破折号代表线条。

我想让它左对齐,='s对齐,小数对齐。类似的东西:

-- Maximum Energy = 100.00 MeV
-- Median Energy  =  50.00 MeV  
-- Minimum Energy =   5.00 MeV

当然这并不完美,可能是我在剧情中能做的最好的,但我比原版更喜欢它。

我假设我需要手动执行此操作,因此我尝试添加空格,我尝试将一个字符串与一个左对齐组合,另一个右对齐,但没有成功。

这可能吗?

由于

1 个答案:

答案 0 :(得分:2)

固定宽度字体可能是monospace

import numpy as np
import matplotlib.pyplot as plt

KEu = 100.
KEm = 50.
KEl = 5.
X   = np.linspace(1,10,10) 

fig = plt.figure()
ax = plt.subplot(111)
ax.plot(X,KEu*X,label=r"Maximum Energy = {0:6.2f} MeV".format(KEu))
ax.plot(X,KEm*X,label=r"Median  Energy = {0:6.2f} MeV".format(KEm))
ax.plot(X,KEl*X,label=r"Minimum Energy = {0:6.2f} MeV".format(KEl))
ax.legend(loc='upper left', prop={'family': 'monospace'})
plt.show()

enter image description here