【问题标题】:Matplotlib global legend for lots of subplots许多子图的 Matplotlib 全局图例
【发布时间】:2016-09-07 12:07:52
【问题描述】:

我在弄清楚如何强制 matplotlib 在我想要的地方添加图例时遇到了一些问题。

我目前的数字是这样的:

我使用以下脚本生成这个 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 来做到这一点,但问题是你可以在我附加的图中看到,例如最后一个图只包含蓝色数据,因此只会显示蓝色图例。我想在同一个地方放置一个完整的图例(红色和蓝色)。我什至不知道蓝色和红色的情节会放在哪里。

这可能吗?

【问题讨论】:

    标签: python python-3.x matplotlib


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-11-23
      • 2021-05-03
      • 2017-01-03
      • 2012-04-07
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多