matplotlib 범례 마커는 한 번만


238

나는 종종 다음과 같이 matplotlib 플롯에 점을 플로팅합니다.

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

그러나 이로 인해 범례는 범례에 별표를 두 번 배치하여 다음과 같이 표시됩니다.

* * Global Optimum

내가 정말로 그것을 원할 때 :

 *  Global Optimum

어떻게해야합니까?


48
이 질문을 여러 번 공표 할 수 있기를 바랍니다. 나는 기본 numpoints=2협약을 싫어하고 누군가가 이미 그것에 대해 묻고 답을 얻기 위해 시간을내는 것을 보았을 때 안심했다.
Chris Redford

24
마음 : 산점도 옵션은scatterpoints=1
Marcos Alex

답변:


253

이것은 작동해야합니다 :

legend(numpoints=1)

BTW, 라인을 추가하면

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

matplotlibrc 파일에 추가하면 이것이 새로운 기본값이됩니다.

[줄거리에 따라 산점도 참조하십시오.]

API : API 문서에 연결


7
감사. 나는 오늘도 이것에 부딪쳤다. 이것이 기본값이 아닌 이유는 무엇입니까?
saltycrane

API에 대한 링크를 추가 할 수 있습니까? matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.legend 직접 편집 할 수는 있지만 무례한 것 같습니다.
tacaswell

2
포인트가 범례에서 차지하는 면적을 줄일 수있는 방법이 있습니까?
Yotam

3
@DMS : 나는 그것을 보지 못했다. 내 실수. 또한 더 잘 보이도록 코드로 강조 표시해야합니다.
Marcos Alex

2
마지막으로, matplotlib 2.0에서 numpoints = 1을 기본값으로 사용할 계획이 있습니다! 후자! github.com/matplotlib/matplotlib/issues/4854
DanHickstein

25

모든 파이썬 스크립트에서 matplotlib rc 매개 변수를 동적으로 변경하고 싶습니다. 이 목표를 달성하기 위해 파이썬 파일의 시작 부분에 이와 비슷한 것을 사용합니다.

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

이것은 내 파이썬 파일에서 생성 된 모든 플롯에 적용됩니다.

편집 : pylab을 가져오고 싶지 않은 사람들에게는 긴 대답은

import matplotlib as mpl
mpl.rcParams['legend.numpoints'] = 1
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.