matplotlib图例栏和文本未对齐

时间:2018-04-02 14:02:06

标签: python-2.7 matplotlib legend

我在matplotlib中使用python2.7来获取具有多个轨迹的数字。我得到这个数字作为我的代码的输出: enter image description here 但是,如您所见,每个轨迹的标题未与相应的颜色线对齐。我玩legend的选项,但没有找到解决方案。

你知道吗?

这是我的代码:

import numpy as np
import matplotlib.pyplot as plt

liste = range(1,13)
labels = ['3-3','3-4','3-5','3-6','4-3','4-4',
          '4-5','4-6','5-3','5-4','5-5','5-6',
          '6-3','6-4','6-5','6-6']

plt.figure(1)
plt.subplot(2,1,1)

for cnt, j in enumerate(labels):    
    a1 = range(100) # iter
    a2 = np.random.randint(10,size=[100]) # dnn
    a3 = np.ones((100)) # optimal

    if cnt == 0:
        plt.plot(a1,a3,label='BS', color='blue')
        plt.plot(a1, np.divide(a3,a3), color='blue')

    title_font = {'size':'11', 'color':'black', 'weight':'normal',
               'verticalalignment':'bottom'}

    plt.plot(a1,a2,label=j, color='red')


plt.xlabel('episode')
plt.ylabel('cost')
plt.grid(True)

lgd=plt.legend(bbox_to_anchor=(0., 1.0, 1.0, 0.102), 
                loc=3, ncol=len(liste), mode="expand", borderaxespad=0.)

plt.show()

1 个答案:

答案 0 :(得分:2)

图例句柄和标签不适合图例框。删除mode="expand"标签时可能会看到。

要使图例条目占用更少的空间,请使用handlelengthhandletextpadcolumnspacing并使用参数直到它们适合。如果情况仍然不是这样,则需要使用较少的列。将ncols设置为较低的数字。 例如。以下

lgd=plt.legend(bbox_to_anchor=(0., 1.02, 1.0, 0.102),
               handlelength=0.9, handletextpad=0.3,columnspacing=0.7,
               loc=3, ncol=9, mode="expand", borderaxespad=0.)

可以获得包含所有图例条目的图像

enter image description here