2011-09-30 4 views
2

MatLab에서 NumPy/matplotlib로 전환 중입니다. 부족한 것으로 보이는 matplotlib의 기능은 대화식 플로팅입니다. Zooming and panning이 유용하지만 나에게 자주 사용되는 경우는 다음과 같습니다.matplotlib로 대화 형 이미지 플로팅

imshow()을 사용하여 그레이 스케일 이미지를 그립니다 (이 경우 Matlab과 matplotlib 모두 잘됩니다). 그림이 나타나면 특정 픽셀 (해당 x 및 y 좌표)을 찾아 내서 그 값을 얻고 싶습니다.

이것은 Matlab 그림에서하기 쉽지만 matplotlib에서이를 수행 할 수있는 방법이 있습니까?

This은 가깝지만 이미지 용으로 보이지 않습니다.

답변

2

사용자 지정 이벤트 처리기는 사용자가 필요로하는 것입니다. 그것은 어렵지 않지만 "단지 효과가있다"는 것은 아닙니다.

This question은 내가 알고있는 것과 매우 흡사합니다. 설명이 필요하면 더 많은 정보를 추가해 드리겠습니다.

+0

합니다. 나는 그것을 시도하고 알려주지. 나는 그 질문을 찾았을 때 찾지 못했습니다. 내 용도로 보간 값이 필요하지 않으므로 이미지 배열에서 값을 검색하는 것이 가장 좋은 방법입니다. matplotlib의 확장성에 감사하지만이 빌트인과 같은 것을 가지고 있으면 좋을 것입니다. –

+0

지연되어서 죄송합니다. 네, 그 질문에 대한 답은 꽤 멋진 이벤트 핸들러를 가지고 있습니다. 그것은 나의 필요를 위해 충분히 잘 작동하지만 클릭하는 대신 마우스 오버 중에 그림의 상태 표시 줄에 정보를 표시하는 것이 더 시원할 수도 있습니다. 나중에 시간/관심사가 있다면, 내가 할 수있는 것을 볼 것입니다. –

1

이미 처리 했으리라 확신합니다. 약간 (!) link 수정, 나는 당신에게 그리기 영역 내에서 한번 클릭 한 x 및 y 좌표를 제공하는 다음 코드를 작성했습니다.

from pylab import * 
import sys 
from numpy import * 
from matplotlib import pyplot 

class Test: 

    def __init__(self, x, y): 
    self.x = x 
    self.y = y 

    def __call__(self,event): 
    if event.inaxes: 
     print("Inside drawing area!") 
     print("x: ", event.x) 
     print("y: ", event.y) 
    else: 
     print("Outside drawing area!") 

if __name__ == '__main__':  
    x = range(10) 
    y = range(10)  
    fig = pyplot.figure("Test Interactive") 
    pyplot.scatter(x,y) 
    test = Test(x,y) 
    connect('button_press_event',test)  
    pyplot.show() 

또한이 더 쉽게 요리 책 link에서 제공하는 것보다 대화 형 플롯의 기본을 이해할 수 있도록해야한다.

P .:이 프로그램은 정확한 픽셀 위치를 제공합니다. 해당 위치의 값은 각 픽셀의 회색 음영 값을 제공해야합니다.

은 또한 다음은 도움이 될 수 : 매우 유망한 보이는 http://matplotlib.sourceforge.net/users/image_tutorial.html