2013-03-31 2 views
2

imshow()을 사용하여 matplotlib에 행렬을 만들었습니다. 버튼을 누르면 매트릭스의 특정 플롯 포인트가 강조 표시됩니다. 내가 선택하고 싶은 목록에 좌표 집합이 있습니다. 내 행렬은 또한 이진 행렬입니다.matplotlib 행렬의 특정 점 강조 표시

+1

'강조 표시'가 무슨 뜻인지 완전히 모르겠다. 행렬의 특정 위치 위에 몇 개의 점을 그려 넣으시겠습니까? –

+0

그들은 모두 검은 색입니다. 버튼을 누르면 다른 색깔로 그 중 일부가 보입니다. –

+0

아직도 당신이하려는 것을 이해하지 못합니다. 강조 표시 할 요소를 어떻게 지정 하시겠습니까? 너 무슨 뜻이야? '어떤 점이 강조되고, 어떤 점만 강조 되니?' 항상 매트릭스의 동일한 요소를 강조 표시하려고합니까, 아니면 변경 될까요? –

답변

2

당신이 정확히 무엇을 요구하는지 이해한다면 나는 이것을 imshow 매트릭스 상단에있는 RGBA 오버레이로 보내고, 알파 채널은 '하이라이트'하려는 점을 제외하고는 0으로 설정합니다. . 그런 다음 강조 표시를 켜거나 끄기 위해 오버레이의 가시성을 토글 할 수 있습니다.

from matplotlib.pyplot import * 
import numpy as np 

def highlight(): 
    m = np.random.randn(10,10) 
    highlight = m < 0 

    # RGBA overlay matrix 
    overlay = np.zeros((10,10,4)) 

    # we set the red channel to 1 
    overlay[...,0] = 1. 

    # and we set the alpha to our boolean matrix 'highlight' so that it is 
    # transparent except for highlighted pixels 
    overlay[...,3] = highlight 

    fig,ax = subplots(1,1,num='Press "h" to highlight pixels < 0') 

    im = ax.imshow(m,interpolation='nearest',cmap=cm.gray) 
    colorbar(im) 
    ax.hold(True) 
    h = ax.imshow(overlay,interpolation='nearest',visible=False) 

    def toggle_highlight(event): 
     # if the user pressed h, toggle the visibility of the overlay 
     if event.key == 'h': 
      h.set_visible(not h.get_visible()) 
      fig.canvas.draw() 

    # connect key events to the 'toggle_highlight' callback 
    fig.canvas.mpl_connect('key_release_event',toggle_highlight) 
+0

아름다운 답변. 초보자를 위해 : "visible = False"를 삭제하십시오. 라인 추가 : "highlight(); show()" – roadrunner66