본문 바로가기
파이썬

파이썬 matplotlib의 imshow ()에 범례를 추가하는 방법

by º기록 2020. 12. 10.
반응형

matplotlib 를 사용하고 있습니다.

plot () 또는 bar () 에서 레이블을 추가하면 범례를 쉽게 넣을 수 있습니다. 하지만 contourf () 또는 imshow () 이면

색상 범위를 나타낼 수있는 colorbar () 가 있다는 것을 알고 있지만 만족스럽지 않습니다. 이름 (레이블)이있는 그런 전설을 원합니다.

여기에 이미지 설명 입력

내가 생각할 수있는 것은 매트릭스의 각 요소에 레이블을 추가 한 다음 legend ()를 시도하여 작동하는지 확인하지만 값과 같이 요소에 레이블을 추가하는 방법은 무엇입니까 ??

제 경우에는 원시 데이터는 다음과 같습니다.

1,2,3,3,4
2,3,4,4,5
1,1,1,2,2

예를 들어, 1은 '잔디', 2는 '모래', 3은 '언덕'을 나타냅니다. imshow ()는 내 경우에는 완벽하게 작동하지만 범례는 없습니다.

내 질문은 :

예를 들어 자동으로 범례를 추가 할 수있는 함수가 있습니까? 예를 들어 제 경우에는 다음과 같이하면됩니다. someFunction ( 'grass', 'sand', ...)

없는 경우 행렬의 각 값에 레이블을 어떻게 추가합니까? 예를 들어, 행렬 '잔디'의 모든 1에 레이블을 지정하고 행렬 'sand'의 모든 2에 레이블을 지정합니다.

감사합니다!

수정 :

@dnalow 덕분에 정말 똑똑합니다. 그러나 공식적인 해결책이 있는지 여전히 궁금합니다.

 

해결 방법

 

전설을 만들려면 선이 필요하기 때문에 전설을 속 여야한다고 생각합니다.

다음과 같이 할 수 있습니다.

import pylab as pl
mycmap = pl.cm.jet # for example
for entry in pl.unique(raw_data):
    mycolor = mycmap(entry*255/(max(raw_data) - min(raw_data)))
    pl.plot(0, 0, "-", c=mycolor, label=mynames[entry])

pl.imshow(raw_data)
pl.legend()

원인은 아직 그다지 만족스럽지 않습니다. 하지만 그 위에 무언가를 만들 수있을 것입니다.

[편집 : 누락 된 괄호 추가]

 

참조 페이지 https://stackoverflow.com/questions/25482876

 

 

반응형

댓글