扩展了 2 个子图的图例

Tas*_*sou 4 python matplotlib legend subplot

我怎样才能让相同的图例出现在 2 个子图上,并使其扩展到 2 个子图上。有人知道吗,如果我必须单独精确每个子图的 y 标签(如果它是相同的)(该图用于一篇科学论文) ?我知道后一个问题与计算无关,但如果有人知道答案,我将不胜感激。

对于图例的放置,我使用:

        ax[0].legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3,
               ncol= 4, mode="expand", borderaxespad=0)
Run Code Online (Sandbox Code Playgroud)

地块

use*_*786 6

要使图例延伸到两个子图,您需要调整给定的坐标bbox_to_anchor。用于2.2宽度(第三个参数)覆盖图宽度的 2 倍加上子图之间的间距。(如果您的间距与默认间距不同,例如f.tightlayout(),则需要调整该值。)

这是一个简单的工作示例:

import numpy as np
import matplotlib.pyplot as plt

x1 = np.linspace(0.0, 2.0)
x2 = np.linspace(0.0, 2.0)

y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
y2 = np.cos(2 * np.pi * x2)

f,ax = plt.subplots(1, 2)

ax[0].plot(x1, y1, 'ko-', label='Damped')
ax[0].plot(x2, y2, 'r.-', label='Undamped')
ax[1].plot(x1, y1, 'ko-', label='Damped')
ax[1].plot(x2, y2, 'r.-', label='Undamped')

ax[0].legend(bbox_to_anchor=(0., 1.02, 2.2, .102), loc=3,
               ncol=4, mode="expand", borderaxespad=0)

plt.show()
Run Code Online (Sandbox Code Playgroud)

结果是这个图:

在此输入图像描述