2011-05-27 40 views
211

我經常繪製一個點上matplotlib陰謀有:matplotlib傳奇標記只有一次

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

然而,這將導致傳說把傳說中的明星的兩倍,使得它看起來像:

* * Global Optimum 

當我真的希望它看起來像:

* Global Optimum 

我該怎麼辦呢?

+43

我希望我能這個問題,多次給予好評。我討厭默認的'numpoints = 2'大會,看到有人已經花時間詢問並得到答案,我感到寬慰。 – 2011-08-14 15:33:18

+20

注意:散點圖的選項是'scatterpoints = 1' – 2014-03-06 16:05:33

回答

226

這應該工作:

legend(numpoints=1) 

順便說一句,如果添加行

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

您matplotlibrc文件,那麼這將是新的默認。

[見scatterpoints,這取決於你的情節。]

API:Link to API docs

+7

謝謝。我今天也遇到了這個。爲什麼這不是默認? – saltycrane 2011-05-27 06:45:38

+0

你可以添加一個鏈接到api嗎? http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.legend我可以在自己編輯它,但這似乎粗魯。 – tacaswell 2013-09-23 18:20:22

+0

忽略我的刪除評論爲什麼默認是它是什麼,他們是錯的。 – tacaswell 2013-09-23 18:28:10

23

我喜歡動態地改變每個python腳本我matplotlib RC參數。爲了實現這個目標,我簡單地在我的python文件的開頭使用類似的東西。

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

這將適用於從我的python文件生成的所有圖。

編輯:對於那些誰不喜歡導入pylab,長的回答是

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