Я знаю, как разбить легенду о сюжете на две отдельные легенды:
x = np.linspace(0,1)
y1 = x
y2 = 2*x
fig, ax = plt.subplots()
fig.set_size_inches((8,8))
points = []
pnts = ax.scatter(x, y1, c='b')
points.append(pnts)
pnts = ax.scatter(x, y2, marker='v', c='r')
points.append(pnts)
leg1 = plt.legend([points[0]], ['blue'],\
loc=2, ncol=1, fancybox=False, shadow=False, framealpha=0.0, fontsize = 25)
leg2 = plt.legend([points[1]], ['red'],\
loc=4, ncol=1, fancybox=False, shadow=False, framealpha=0.0, fontsize = 25)
ax.add_artist(leg1)
ax.add_artist(leg2)
Это дает прекрасную фигуру, которую вы ожидаете:
Что мне нужно сделать, так это расширить этот метод на несколько вспомогательных участков на одном рисунке. Я думал, что естественное расширение будет
x = np.linspace(0,1)
y1 = x
y2 = 2*x
fig, ax = plt.subplots(1, 2, sharex = False, sharey = False)
fig.set_size_inches((16,8))
#################
points = []
pnts = ax[0].scatter(x, y1, c='b')
points.append(pnts)
pnts = ax[0].scatter(x, y2, marker='v', c='r')
points.append(pnts)
leg1 = plt.legend([points[0]], ['blue'],\
loc=2, ncol=1, fancybox=False, shadow=False, framealpha=0.0, fontsize = 25)
leg2 = plt.legend([points[1]], ['red'],\
loc=4, ncol=1, fancybox=False, shadow=False, framealpha=0.0, fontsize = 25)
ax[0].add_artist(leg1)
ax[0].add_artist(leg2)
#################
points = []
pnts = ax[1].scatter(x, y1, c='g')
points.append(pnts)
pnts = ax[1].scatter(x, y2, marker='orange', c='r')
points.append(pnts)
leg1 = plt.legend([points[0]], ['green'],\
loc=2, ncol=1, fancybox=False, shadow=False, framealpha=0.0, fontsize = 25)
leg2 = plt.legend([points[1]], ['orange'],\
loc=4, ncol=1, fancybox=False, shadow=False, framealpha=0.0, fontsize = 25)
ax[1].add_artist(leg1)
ax[1].add_artist(leg2)
К сожалению, я получаю
ax [0] .add_artist (leg1) ValueError: Невозможно сбросить оси. Возможно, вы пытаетесь повторно использовать художника в нескольких осях, которые не поддерживаются
Похоже, его нельзя использовать с несколькими вспомогательными сюжетами ... Даже если что-то, что меня удивляет заключается в том, что ошибка выдается в первый раз, когда я пытаюсь вызвать add_artist
.
Обратите внимание, наконец, что я, возможно, могу придумать какое-то решение для грубой силы, такое как создание отдельного топора для каждой легенды или что-то вроде это. Я бы предпочел более автоматизированное решение, способное справиться с потенциально множеством сюжетов и легенд относительно простым способом.