Matplotlib Только маркеры легенд

Я часто рисую точку на графике matplotlib с помощью:

x = 10
y = 100
plot(x, y, "k*", label="Global Optimum")
legend()

Однако это приводит к тому, что легенда дважды помещает звезду в легенду, так что она выглядит так:

* * Global Optimum

когда я действительно хочу, чтобы он выглядел так:

 *  Global Optimum

Как это сделать?

Ответ 1

Это должно работать:

legend(numpoints=1)

Кстати, если вы добавите строку

legend.numpoints     : 1      # the number of points in the legend line

в ваш файл matplotlibrc, тогда это будет новый по умолчанию.

[См. также точки рассеяния, в зависимости от вашего сюжета.]

API: Ссылка на документы API

Ответ 2

Мне нравится изменять параметры matplotlib rc динамически в каждом python script. Для достижения этой цели я просто использую нечто подобное в начале моих файлов python.

from pylab import *
rcParams['legend.numpoints'] = 1

Это применимо ко всем графикам, сгенерированным из моего файла python.

EDIT: для тех, кто не любит импортировать pylab, длинный ответ

import matplotlib as mpl
mpl.rcParams['legend.numpoints'] = 1