2011-05-27 16 views
211

मैं अक्सर साथ एक matplotlib भूखंड पर एक बिंदु साजिश:matplotlib लीजेंड मार्करों केवल एक बार

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

हालांकि, इस कथा में एक स्टार दो बार डाल करने के लिए, ऐसा है कि ऐसा लगता है कि कथा का कारण बनता है की तरह:

* Global Optimum 

मैं यह करने के लिए कैसे करते हैं:

* * Global Optimum 

जब मैं वास्तव में यह की तरह लग रहे करना चाहते हैं?

+43

काश मैं इस सवाल को कई बार वोट दें सकता है। मैं डिफ़ॉल्ट 'numpoints = 2' सम्मेलन से नफरत करता हूं और यह देखने के लिए राहत मिली थी कि किसी ने पहले से ही इसके बारे में पूछने के लिए समय निकाला है और जवाब प्राप्त कर लिया है। –

+20

मन: स्कैटरप्लॉट के लिए विकल्प 'scatterpoints = 1' –

उत्तर

226

यह काम करना चाहिए:

legend(numpoints=1) 

Btw, अगर आप अपने matplotlibrc फाइल करने के लिए लाइन

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

जोड़ें, फिर इस नए डिफ़ॉल्ट होगा।

[भी scatterpoints देखें, अपने भूखंड पर निर्भर करता है।]

एपीआई: Link to API docs

+7

धन्यवाद है। मैं आज भी इसमें भाग गया। यह डिफ़ॉल्ट क्यों नहीं है? – saltycrane

+0

क्या आप एपीआई के लिए एक लिंक जोड़ सकते हैं? http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.legend मैं इसे अपने आप में संपादित कर सकता हूं, लेकिन यह कठोर लगता है। – tacaswell

+0

मेरी हटाई गई टिप्पणियों को अनदेखा करें कि डिफ़ॉल्ट क्यों है, वे गलत हैं। – tacaswell

23

मैं हर अजगर स्क्रिप्ट में गतिशील रूप से मेरी matplotlib rc पैरामीटर बदलना चाहते। इस लक्ष्य को प्राप्त करने के लिए मैं बस अपनी पाइथन फाइलों की शुरुआत में कुछ ऐसा उपयोग करता हूं।

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

यह मेरी पायथन फ़ाइल से उत्पन्न सभी भूखंडों पर लागू होगा।

संपादित करें: जो लोग pylab आयात करने के लिए पसंद नहीं है के लिए, विस्तृत उत्तर

import matplotlib as mpl 
mpl.rcParams['legend.numpoints'] = 1 
संबंधित मुद्दे