하기 matplotlib의 라이브러리는 특히 Jupyter 노트북 내부에 매우 능력이 있지만, 상호 교환 성이 부족하다. plot.ly 와 같은 좋은 오프라인 플로팅 도구를 원합니다 .
하기 matplotlib의 라이브러리는 특히 Jupyter 노트북 내부에 매우 능력이 있지만, 상호 교환 성이 부족하다. plot.ly 와 같은 좋은 오프라인 플로팅 도구를 원합니다 .
답변:
대화식 D3 플롯을 생성하는 MPLD3 라는 멋진 라이브러리가 있습니다 .
이 코드는 Jupyter Notebook과 호환되는 널리 사용되는 홍채 데이터 세트의 HTML 대화식 플롯을 생성합니다. 페인트 브러시를 선택하면 모든 플롯 중에서 강조 표시 할 데이터 하위 집합을 선택할 수 있습니다. 십자형 화살표를 선택하면 데이터 포인트 위로 마우스를 가져 가고 원래 데이터에 대한 정보를 볼 수 있습니다. 이 기능은 탐색 적 데이터 분석을 수행 할 때 매우 유용합니다.
matplotlib.pyplot을 plt로 가져 오기 numpy를 np로 가져 오기 팬더를 pd로 가져 오기 SB로 seaborn 가져 오기 mpld3 가져 오기 mpld3 가져 오기 플러그인에서 % matplotlib 인라인 홍채 = sb.load_dataset ( 'iris') sklearn.preprocessing 가져 오기 StandardScaler에서 X = pd.get_dummies (아이리스) X_scal = 표준 스케일러 () .fit_transform (X) 희미한 = 3 sklearn.decomposition 수입 PCA에서 pca = PCA (n_components = 희미 함) Y_sklearn = pca.fit_transform (X_scal) # 사용자 정의 레이블을 제어하기 위해 CSS를 정의하십시오. css = "" " 표 { 국경 붕괴 : 붕괴; } 일 { 색상 : #ffffff; 배경색 : # 000000; } td { 배경색 : #cccccc; } 테이블, 일, td { 폰트-패밀리 : Arial, Helvetica, sans-serif; 테두리 : 1px 검은 색; 텍스트 정렬 : 오른쪽; } "" " 무화과, 도끼 = plt. subplots (dim, dim, figsize = (6,6)) 그림 subplots_adjust (hspace = .4, wspace = .4) 툴팁 = [없음] * dim N = 200 인덱스 = np.random.choice (range (Y_sklearn.shape [0]), size = N) m 범위 내 (dim) : 범위 (m + 1)의 n의 경우 : ax [m, n] .grid (참, 알파 = 0.3) 산란 = ax [m, n] .scatter (Y_sklearn [index, m], Y_sklearn [index, n], alpha = .05) 라벨 = [] 색인에서 i의 경우 : 레이블 = X.ix [[i], :]. T.astype (int) label.columns = [ '행 {0}'. format (X.index [i])] labels.append (str (label.to_html ())) ax [m, n] .set_xlabel ( 'Component'+ str (m)) ax [m, n] .set_ylabel ( 'Component'+ str (n)) #ax [m, n] .set_title ( 'HTML 툴팁', 크기 = 20) tooltip [m] = 플러그인 .PointHTMLTooltip (scatter, labels, voffset = 20, hoffset = 20, css = css) plugins.connect (그림, 툴팁 [m]) plugins.connect (그림, plugins.LinkedBrush (scatter)) 테스트 = mpld3.fig_to_html (fig = fig) text_file로 open ( "Output.html", "w") 사용 : text_file.write (test)
[2016 년 7 월 9 일] 업데이트 : Plot.ly에 오프라인 모드가 있으며 이제는 오픈 소스임을 알게되었습니다. 그것은 많은 종소리와 휘파람이 사전 포장되어 있지만 MPLD3은 여전히 적절한 경우가 있습니다.
내 의도는 플러그 / 광고하지 않는 것이기 때문에 대답 대신 주석으로 사용하고 싶지만 현재 원하는대로 수행 할 때 관심이있을 수있는 논문을 작성 중입니다. 실제로는 클러스터링 시각화 도구이지만 k = 1 인 k- 평균을 사용하는 경우 용어를 검색하고 영역을 선택하며 각 노드의 내용 및 기타 항목을 볼 수있는 대화식 그림이 있습니다. 살펴보고 그것이 당신을 위해 작동하는지 확인하십시오!
아주 좋은 선택은, 음모는 ...
필자의 경우, 기술이 300 차원의 word2vec 포함 인 기술을 기반으로 유사한 지정을 작성하려고했습니다. 그것을 3 차원 벡터 공간으로 가져 왔고, 플롯 Scatter3D를 사용하여 3D 산점도를 그릴 수있었습니다.
Et Viola !! 호버 및 확대 기능으로 멋진 3 차원 그래프를 얻습니다. 그리고 가장 중요한 부분은 html 파일로 내 보내서 다른 PC에 적합한 플러그 앤 플레이로 만들 수 있으며 브라우저에서 끌어서 놓기 만하면됩니다 (아래 코드에 포함되어 있음).
더 이상 무엇이든 더 간단하게 할 수 있습니까?
from plotly.offline import plot
from plotly.graph_objs import *
import numpy as np
# x = np.random.randn(2000)
# y = np.random.randn(2000)
# Instead of simply calling plot(...), store your plot as a variable and pass it to displayHTML().
# Make sure to specify output_type='div' as a keyword argument.
# (Note that if you call displayHTML() multiple times in the same cell, only the last will take effect.)
p = plot(
[
Scatter3d(x=skills_df[0], y=skills_df[1], z=skills_df[2], text= skills_df['designation'], mode='markers', marker=Marker(color=skills_df['cluster_number'], size=3, opacity=0.5, colorscale='Viridis'))
],
output_type='div'
# filename='/dbfs/FileStore/tables/lnkdn_jobroles_viridis.html' turn it on to save the file
)
ipywidgets
예제를 볼 수 있습니다. /… ) 또는bokeh
( bokeh.pydata.org/en/latest ).