Matplotlib的大量子图的全球传奇

时间:2016-09-07 12:07:53

标签: python python-3.x matplotlib

我有一些问题,想弄清楚如何强制matplotlib添加我想要的传奇。

我目前看到的数字如下: enter image description here

enter image description here

我用以下脚本生成这个2页的情节:

n = 1
trn = True
for i in diff.keys():
    plt.subplot(8, 4, n)
    plt.xlim([0, rounds + 1])
    plt.locator_params(axis='y', nbins=5)
    if PEPTIDE_KD[i] == 1e-2:
        plt.plot(x_cord, [x[0] for x in diff[i]], 'ro--', label='asd')
        plt.plot(x_cord, [x[1] for x in diff[i]], 'rv--', label='bsd')
    else:
        plt.plot(x_cord, [x[0] for x in diff[i]], 'bo--', label='asd')
        plt.plot(x_cord, [x[1] for x in diff[i]], 'bv--', label='csd')
    plt.title(i)
    n += 1
    if n == 33 and trn:
        n = 1
        trn = False
        plt.suptitle('Ligand energies')
        plt.locator_params(axis='y', nbins=5)
        plt.subplots_adjust(hspace=0.35)
        plt.show()

plt.legend(bbox_to_anchor=(-0.05, 1), loc=1)
plt.locator_params(axis='y', nbins=5)
plt.subplots_adjust(hspace=0.35)
plt.show()

但是我想将图例放在第一个子图的左侧,或者放在第一行的最后一个子图的右侧。

我可以使用if line == 0 bla bla执行此操作,但问题是您可以在我附加的图中看到,例如最后一个图只包含蓝色数据,因此只会显示蓝色图例。我想把一个完整的传说(红色和蓝色)也放在同一个地方。我甚至不知道预先放置蓝色和红色的地方。

这可能吗?

1 个答案:

答案 0 :(得分:0)

尝试使用figure legend,您可以为any of the lines plotted in图形创建图例,并将其相对于图形定位。