我在matplotlib
中使用python2.7
来获取具有多个轨迹的数字。我得到这个数字作为我的代码的输出:
但是,如您所见,每个轨迹的标题未与相应的颜色线对齐。我玩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()
答案 0 :(得分:2)
图例句柄和标签不适合图例框。删除mode="expand"
标签时可能会看到。
要使图例条目占用更少的空间,请使用handlelength
,handletextpad
和columnspacing
并使用参数直到它们适合。如果情况仍然不是这样,则需要使用较少的列。将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.)
可以获得包含所有图例条目的图像