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
차트에서 더 많은 상호 작용을 원한다면 mpld3와 bokeh를 볼 수 있습니다. 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
'programing' 카테고리의 다른 글
VBA Excel 2003에서 "내 문서" 폴더를 가져오는 언어 독립적인 방법 (0) | 2023.07.06 |
---|---|
프로파일 값을 할당하는 방법은 무엇입니까? (0) | 2023.07.06 |
Node.js - Mongoose - 컬렉션이 있는지 확인합니다. (0) | 2023.07.06 |
여러 안드로이드 애플리케이션이 동일한 파이어베이스 데이터베이스에 액세스할 수 있습니까? (0) | 2023.07.06 |
ELMAH를 사용한 WCF 서비스에 대한 예외 로깅 (0) | 2023.07.06 |