matplotlib Efsane İşaretçileri Sadece Bir Kez


238

Ben sık sık bir matplotlib arsa üzerinde bir nokta çizin:

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

Ancak, bu efsanenin efsaneye iki kez bir yıldız koymasına neden olur, öyle ki:

* * Global Optimum

gerçekten gibi görünmesini istediğimde:

 *  Global Optimum

Bunu nasıl yaparım?


48
Keşke bu soruyu birden fazla kez değerlendirebilsem. Varsayılan numpoints=2sözleşmeden nefret ediyorum ve birisinin zaten bunu sormak ve bir cevap almak için zaman ayırdığını görmek rahatlamıştı.
Chris Redford

24
Akıl: dağılım grafikleri için seçenekscatterpoints=1
Marcos Alex

Yanıtlar:


253

Bu çalışmalı:

legend(numpoints=1)

BTW, satırı eklerseniz

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

matplotlibrc dosyanıza, bu yeni varsayılan olacaktır.

[Çiziminize bağlı olarak saçılma noktalarına da bakınız.]

API: API dokümanlarına bağlantı


7
Teşekkürler. Bugün de bununla karşılaştım. Bu neden varsayılan değil?
saltycrane

API'ye bir bağlantı ekleyebilir misiniz? matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.legend Sadece kendimde düzenleyebilirdim, ama kaba görünüyor.
tacaswell

2
Noktanın efsaneye kattığı alanı azaltmanın bir yolu var mı?
Yotam

3
@DMS: Bunu görmemiştim. Benim hatam. Daha görünür olması için kod olarak da vurgulamanız gerekir.
Marcos Alex

2
Sonunda, matplotlib 2.0'da = 1 değerinin varsayılan olması için planlar var! Huzzah! github.com/matplotlib/matplotlib/issues/4854
DanHickstein

25

Matplotlib rc parametrelerimi her python betiğinde dinamik olarak değiştirmeyi seviyorum. Bu hedefe ulaşmak için python dosyalarımın başında böyle bir şey kullanıyorum.

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

Bu, python dosyamdan oluşturulan tüm grafikler için geçerli olacaktır.

EDIT: Pylab ithal etmeyi sevmeyenler için uzun cevap

import matplotlib as mpl
mpl.rcParams['legend.numpoints'] = 1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.