Jupyter-lab + matplotlib로 마우스 위치의 이미지 데이터의 픽셀 값을 표시하는 메모

3338 단어 JupyterLabmatplotlib

배경



이미지 데이터 (RGB, 물리 데이터 및 텐서 데이터의 이미지 등)의 픽셀 값을 Jupyter-lab로 쉽게 만들고 싶습니다.

방법



Jupyter notebook 과 Jupyter-lab 는 구조가 다른 것 같아, notebook 의 방법은 사용할 수 없습니다 ( %matplotlib notebook , inline
matplotlib의 interactive plot은 작동 방식이 다릅니다 (JS 출력을 사용해야합니까?).

ipympl 및 jupyter-matplotlib 확장을 설치해야합니다.
$ jupyter labextension install @jupyter-widgets/jupyterlab-manager
$ jupyter labextension install jupyter-matplotlib

.

jupyterlab-manager는 Jupyter-lab에서도 수행 할 수 있습니다.

샘플



from stackoverflow
%matplotlib widget
import matplotlib.pyplot as plt
import numpy as np
import ipywidgets as wdg  # Using the ipython notebook widgets

# Create a random image
a = np.random.poisson(size=(12,15))
fig = plt.figure()
plt.imshow(a)

# Create and display textarea widget
txt = wdg.Textarea(
    value='',
    placeholder='',
    description='event:',
    disabled=False
)
display(txt)

# Define a callback function that will update the textarea
def onclick(event):
    txt.value = str(event)  # Dynamically update the text box above

# Create an hard reference to the callback not to be cleared by the garbage collector
ka = fig.canvas.mpl_connect('button_press_event', onclick)



Voila!
        @axlair/jupyterlab_vim v0.12.2  enabled  OK
        @jupyter-widgets/jupyterlab-manager v2.0.0  enabled  OK
        itkwidgets v0.27.0  enabled  OK
        jupyter-matplotlib v0.7.3  enabled  OK

zoom



shift + 왼쪽 드래그로 zoom in 할 수 있습니다.
오른쪽 드래그로 zoom out 할 수있는 것 같습니다.

picker



picker의 이벤트 등록을 통해 다양한 기능을 확장 할 수 있습니다.

jupyterlab에서 matplotlib 플롯 다이어그램에 picker를 설정하는 방법
htps : // m / 쇼요 / ms / 7644dbcd2f2cd84c02b

picker와 같은 이벤트와 결합하여 사용자가 지정한 네 모서리를 colorchecker 프레임에 지정하는 것과 같은 작업을 수행 할 수 있다고 상상할 수 있습니다.

ipywidgets interact와의 조합



일단 interact와 결합 할 수 있는지 확인했습니다.

그러나
# Create a random image
def bora(sx):
    a = np.random.poisson(size=(sx,15))
    fig = plt.figure()
    plt.imshow(a)

    # Create and display textarea widget
    txt = wdg.Textarea(
        value='',
        placeholder='',
        description='event:',
        disabled=False
    )
    display(txt)

    # Define a callback function that will update the textarea
    def onclick(event):
        txt.value = str(event)  # Dynamically update the text box above

    # Create an hard reference to the callback not to be cleared by the garbage collector
    ka = fig.canvas.mpl_connect('button_press_event', onclick)

interact(bora, sx=15)

느낌이 들었을 때, 많은 fig가 열리고 warning이 나왔습니다.
적절하게 close를 호출해야합니다.

좋은 웹페이지 즐겨찾기