programing

IPthon 노트북에서 대화형 matplotlib 창을 열려면 어떻게 해야 합니까?

telebox 2023. 7. 6. 22:08
반응형

IPthon 노트북에서 대화형 matplotlib 창을 열려면 어떻게 해야 합니까?

IPython을 사용하고 있습니다.--pylab=inline그리고 때때로 플롯(터미널 Python 콘솔에서 무언가를 플롯할 때 나타나는 것)을 보기 위해 대화형 확대/축소 가능한 매트플롯립 GUI로 빠르게 전환하고 싶습니다.내가 어떻게 그럴 수 있을까?노트북을 종료하거나 다시 시작하지 않는 것이 좋습니다.

IPy 노트북의 인라인 플롯의 문제는 해상도가 제한되어 있기 때문에 더 작은 부분을 보기 위해 확대할 수 없다는 것입니다.터미널에서 시작하는 maptlotlib GUI를 사용하여 확대할 그래프의 직사각형을 선택하고 그에 따라 축을 조정할 수 있습니다.저는 실험을 해봤습니다.

from matplotlib import interactive
interactive(True)

그리고.

interactive(False)

하지만 아무 소용이 없었어요저도 온라인에서 힌트를 찾을 수 없었습니다.

설명서에 따르면 다음과 같이 앞뒤로 전환할 수 있어야 합니다.

In [2]: %matplotlib inline 
In [3]: plot(...)

In [4]: %matplotlib qt  # wx, gtk, osx, tk, empty uses default
In [5]: plot(...) 

그러면 일반 플롯 창이 나타납니다(노트북을 다시 시작해야 할 수도 있습니다).

인라인 플롯에서 대화형 및 뒤로 전환하여 이동/확대/축소할 수 있도록 하려면 %matplotlib 마법을 사용하는 것이 좋습니다.

#interactive plotting in separate window
%matplotlib qt 

HTML로 돌아갑니다.

#normal charts inside notebooks
%matplotlib inline 

%pylab 마법은 다른 많은 것들을 가져오고 심지어 충돌을 일으킬 수도 있습니다."from pylab import *"를 수행합니다.

새 노트북 백엔드(matplotlib 1.4에 추가됨)도 사용할 수 있습니다.

#interactive charts inside notebooks, matplotlib 1.4+
%matplotlib notebook 

차트에서 더 많은 상호 작용을 원한다면 mpld3bokeh를 볼 수 있습니다. mpld3는 수많은 데이터 포인트(예: <5k+)가 없고 일반적인 matplotlib 구문을 사용하고 싶지만 %matplotlib 노트북에 비해 더 많은 상호 작용을 사용하고 싶다면 좋습니다. boke는 많은 데이터를 처리할 수 있습니다.하지만 그것은 별도의 라이브러리이기 때문에 구문을 배워야 합니다.

또한 pivotablejs(pip 설치 pivotablejs)도 확인할 수 있습니다.

from pivottablejs import pivot_ui
pivot_ui(df)

대화형 데이터 탐색이 아무리 멋지더라도 재현성을 완전히 망칠 수 있습니다.저도 그런 적이 있기 때문에 초기 단계에서만 사용하고 데이터 느낌이 나면 순수 인라인 매트플롯lib/seaborn으로 전환하려고 합니다.

matplotlib 1.4.0부터는 노트북에서 사용할 수 있는 대화형 백엔드가 제공됩니다.

%matplotlib notebook

해당 별칭이 등록되지 않은 일부 버전의 IPython이 있습니다. 폴백은 다음과 같습니다.

%matplotlib nbagg

만약 그것이 작동하지 않는다면, IPython을 업데이트하세요.

이 기능을 사용하려면 tmpnb.org 을 방문하십시오.

앤 페이스트

%matplotlib notebook

import pandas as pd
import numpy as np
import matplotlib

from matplotlib import pyplot as plt
import seaborn as sns

ts = pd.Series(np.random.randn(1000), index=pd.date_range('1/1/2000', periods=1000))
ts = ts.cumsum()

df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index,
                  columns=['A', 'B', 'C', 'D'])
df = df.cumsum()
df.plot(); plt.legend(loc='best')    

코드 셀로(또는 기존 파이썬 데모 노트북을 수정하기만 하면 됨)

사용할 수 있습니다.

%matplotlib qt

오가발한경우생류▁error▁ifImportError: Failed to import any qt binding그런 다음 PyQt5를 다음과 같이 설치합니다.pip install PyQt5저한테는 효과가 있어요

문제에 대한 더 나은 해결책은 차트 라이브러리일 수 있습니다.이를 통해 우수한 Highcharts javascript 라이브러리를 사용하여 아름답고 상호작용적인 플롯을 만들 수 있습니다.높은 차트는 HTML을 사용합니다.svg모든 차트가 실제로 벡터 이미지가 되도록 태그를 지정합니다.

일부 기능:

  • .png, .jpg 및 .svg 형식으로 다운로드하여 해결 문제가 발생하지 않도록 할 수 있는 벡터 플롯
  • 대화형 차트(확대/축소, 슬라이드, 점 위로 마우스 이동 등)
  • IPython 노트북에서 사용 가능
  • 비동기 플롯 기능을 사용하여 수백 개의 데이터 구조를 동시에 탐색할 수 있습니다.

고지 사항:저는 도서관의 개발자입니다.

저는 5/28/20117 아나콘다(www.continuum.io/downloads )의 "하이브리드 QT 콘솔"에서 ipython을 사용하고 있습니다.

다음은 ipython 마법을 사용하여 별도의 창과 인라인 플롯 모드를 앞뒤로 뒤집는 예입니다.

>>> import matplotlib.pyplot as plt

# data to plot
>>> x1 = [x for x in range(20)]

# Show in separate window
>>> %matplotlib
>>> plt.plot(x1)
>>> plt.close() 

# Show in console window
>>> %matplotlib inline
>>> plt.plot(x1)
>>> plt.close() 

# Show in separate window
>>> %matplotlib
>>> plt.plot(x1)
>>> plt.close() 

# Show in console window
>>> %matplotlib inline
>>> plt.plot(x1)
>>> plt.close() 

# Note: the %matplotlib magic above causes:
#      plt.plot(...) 
# to implicitly include a:
#      plt.show()
# after the command.
#
# (Not sure how to turn off this behavior
# so that it matches behavior without using %matplotlib magic...)
# but its ok for interactive work...

커널을 다시 시작하고 출력을 지운 다음 실행합니다(새 노트북으로 시작하지 않는 경우)

%matplotlib tk

자세한 내용은 matplotlib을 사용한 Plotting을 참조하십시오.

해결책을 찾았어요저는 apt를 통해 설치된 pyqt5를 제거했습니다.그리고 나서, 저는 그것을 pip로 다시 설치했습니다.이것으로 가져오기 오류가 해결되었습니다.

sudo apt-get remove --auto-remove python-pyqt5

pip install PyQt5

matplotlib.use('nbagg')새 버전의 matplotlib에서는 작동하지 않습니다.

대신 우리는 마법 기능을 사용합니다.

%matplotlib nbagg 

새 버전의 matplot lib(>3.0)에서 작동합니다.

import matplotlib
import matplotlib.pylab as plt
%matplotlib inline
%matplotlib nbagg

언급URL : https://stackoverflow.com/questions/14261903/how-can-i-open-the-interactive-matplotlib-window-in-ipython-notebook

반응형