Ответ 1
Возможно, этот пример полезен.
В общем, элементы легенды связаны с каким-то застроенным объектом. Функция/метод scatter
рассматривает все круги как один объект, см.
print type(ax.scatter(...))
Таким образом, решение заключается в создании нескольких объектов. Следовательно, вызов scatter
несколько раз.
К сожалению, более новая версия matplotlib, похоже, не использует прямоугольник в легенде. Таким образом, легенда будет содержать очень большие круги, так как вы увеличили размер ваших объектов разброса.
Функция легенды как аргумент ключевого слова markerscale
для управления размером легендарных маркеров, но, похоже, она сломана.
Update:
Руководство по легенде рекомендует использовать Прокси-исполнитель в подобных случаях. API цвета объясняет допустимые значения fc
.
p1 = Rectangle((0, 0), 1, 1, fc="b")
p2 = Rectangle((0, 0), 1, 1, fc="g")
p3 = Rectangle((0, 0), 1, 1, fc="r")
legend((p1, p2, p3), ('proj1','proj2','proj3'))
Чтобы получить цвета, используемые ранее на графике, используйте приведенный выше пример, например:
pl1, = plot(x1, y1, '.', alpha=0.1, label='plot1')
pl2, = plot(x2, y2, '.', alpha=0.1, label='plot2')
p1 = Rectangle((0, 0), 1, 1, fc=pl1.get_color())
p2 = Rectangle((0, 0), 1, 1, fc=pl2.get_color())
legend((p1, p2), (pl1.get_label(), pl2.get_label()), loc='best')
В этом примере будет сделан такой график, как: