Маркетинг Легенди matplotlib лише один раз


238

Я часто будую крапку на сюжеті matplotlib із:

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

Однак це призводить до того, що легенда двічі ставить зірку в легенду, щоб вона виглядала так:

* * Global Optimum

коли мені дуже хочеться, щоб це виглядало так:

 *  Global Optimum

Як це зробити?


48
Я б хотів, щоб я міг відповісти на це питання кілька разів. Я ненавиджу numpoints=2конвенцію за замовчуванням, і мені було полегшено побачити, що хтось уже встиг попросити про це і отримати відповідь.
Кріс Редфорд

24
Розум: варіант для розсипаньscatterpoints=1
Маркос Алекс

Відповіді:


253

Це має працювати:

legend(numpoints=1)

BTW, якщо додати рядок

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

у ваш файл matplotlibrc, тоді це буде новий за замовчуванням.

[Дивіться також точки розсіювання, залежно від вашого сюжету.]

API: Посилання на документи API


7
Дякую. Я натрапив і на це сьогодні. Чому це не за замовчуванням?
сальтикран

Чи можете ви додати посилання на api? matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.legend Я міг би просто відредагувати це в собі, але це здається грубим.
tacaswell

2
Чи є спосіб зменшити площу, яку займає точка легенди?
Йотам

3
@DMS: Я цього не бачив. Моя помилка. Ви також повинні виділити його як код, щоб зробити його більш помітним.
Маркос Олексій

2
Нарешті, у matplotlib 2.0 є плани, щоб numpoints = 1 був за замовчуванням! Huzzah! github.com/matplotlib/matplotlib/isissue/4854
DanHickstein

25

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

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

Це стосується всіх сюжетів, згенерованих з мого файлу python.

EDIT: Для тих, хто не любить імпортувати пілаб, довга відповідь

import matplotlib as mpl
mpl.rcParams['legend.numpoints'] = 1
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.