대화 형 그래프 시각화를 수행 할 수있는 Python 라이브러리를 추천 할 수 있습니까 ?
나는 특별히 d3.js 와 같은 것을 원 하지만 python
이상적으로는 3D도 될 것입니다.
나는 보았다 :
대화 형 그래프 시각화를 수행 할 수있는 Python 라이브러리를 추천 할 수 있습니까 ?
나는 특별히 d3.js 와 같은 것을 원 하지만 python
이상적으로는 3D도 될 것입니다.
나는 보았다 :
답변:
d3.js 스크립트를 포함하는 xml 페이지를 생성하는 파이썬 모듈 인 d3py를 사용할 수 있습니다 . 예 :
import d3py
import networkx as nx
import logging
logging.basicConfig(level=logging.DEBUG)
G = nx.Graph()
G.add_edge(1,2)
G.add_edge(1,3)
G.add_edge(3,2)
G.add_edge(3,4)
G.add_edge(4,2)
# use 'with' if you are writing a script and want to serve this up forever
with d3py.NetworkXFigure(G, width=500, height=500) as p:
p += d3py.ForceLayout()
p.show()
with d3py.NetworkXFigure(G, width=500, height=500, host="localhost") as p:
. github (SHA : 4e92a90f4003370bc086e0f57b19fca1bd4e8fba)
Plotly는 대화 형 2D 및 3D 그래프를 지원합니다. 그래프는 D3.js로 렌더링되며 Python API , matplotlib , Python 용 ggplot , Seaborn , prettyplotlib 및 pandas 로 생성 할 수 있습니다 . 확대 / 축소, 이동, 트레이스 켜기 / 끄기, 마우스 오버시 데이터를 볼 수 있습니다. 플롯은 HTML, 앱, 대시 보드 및 IPython 노트북에 포함될 수 있습니다. 아래는 상호 작용을 보여주는 온도 그래프 입니다. 더 많은 예제 는 IPython 노트북 튜토리얼 갤러리를 참조하십시오 .
문서는 지원 플롯 유형과 코드 조각의 예제를 제공합니다.
특히 귀하의 질문에 대해 NetworkX에서 대화 형 플롯 을 만들 수도 있습니다 .
Python을 사용한 3D 플로팅의 경우 유사한 대화 형 3D 산점, 선 및 표면 플롯을 만들 수 있습니다. 플롯은 WebGL로 렌더링됩니다. 예를 들어 영국 스왑 금리 의 3D 그래프 를 참조하십시오 .
공개 : 저는 Plotly 팀에 있습니다.
빈센트를 봤어? Vincent는 Python 데이터 개체를 가져 와서 Vega 시각화 문법으로 변환합니다. Vega는 D3 위에 구축 된 더 높은 수준의 시각화 도구입니다. D3py와 비교할 때 vincent repo가 더 최근에 업데이트되었습니다. 예제는 모두 정적 D3입니다.
더 많은 정보:
그래프는 Ipython에서 볼 수 있습니다.이 코드를 추가하면됩니다.
vincent.core.initialize_notebook()
또는 Vega 온라인 편집기 ( http://trifacta.github.io/vega/editor/ ) 에서 JSON 출력 그래프를 보거나 Python 서버에서 로컬로 볼 수 있는 JSON으로 출력 합니다. 보기에 대한 자세한 정보는 위의 pypi 링크에서 찾을 수 있습니다.
언제인지 확실하지 않지만 Pandas 패키지에는 어느 시점에서 D3 통합이 있어야합니다. http://pandas.pydata.org/developers.html
Bokeh는 대화 형 시각화를 지원하는 Python 시각화 라이브러리입니다. 기본 출력 백엔드는 HTML5 Canvas이며 클라이언트 / 서버 모델을 사용합니다.
내가 사용한 레시피 중 하나 (여기 설명 : Scraperwiki 및 networkx를 통한 OpenCorporates 데이터의 GEXF 및 JSON의 공동 감독 네트워크 데이터 파일 )는 다음과 같이 실행됩니다.
networkx JSON의 수출 형태를 취한다 :
from networkx.readwrite import json_graph
import json
print json.dumps(json_graph.node_link_data(G))
또는 네트워크 를 GEXF XML 파일로 내 보낸 다음이 표현을 sigma.js Javascript 시각화 라이브러리 로 가져올 수 있습니다.
from xml.etree.cElementTree import tostring
writer=gf.GEXFWriter(encoding='utf-8',prettyprint=True,version='1.1draft')
writer.add_graph(G)
print tostring(writer.xml)
또 다른 옵션은 방금 버전 0.3으로 이동 한 보케 입니다.
pyd3 를 추천 한 사람들에게는 더 이상 활발하게 개발되지 않으며 vincent를 안내 합니다. vincent는 더 이상 활발하게 개발되지 않으며 altair 사용을 권장 합니다.
따라서 파이썬 d3를 원한다면 altair를 사용하십시오.
python-nvd3을 확인하십시오 . nvd3 용 파이썬 래퍼입니다. d3.py보다 멋지게 보이며 더 많은 차트 옵션이 있습니다.
D3js javascript 시각화와 python의 matplotlib를 결합한 mpld3를 사용하는 것이 좋습니다.
설치 및 사용은 정말 간단하며 멋진 플러그인과 대화 형 기능이 있습니다.
오프라인 API를 사용하여 개인 서버 또는 웹 사이트의 HTML 페이지에 쉽게 삽입 할 수있는 고도의 대화 형 그래프를 생성합니다.
업데이트 : 2D 그래프가 굉장하기 때문에 3D 플로팅 기능에 대해 확신합니다. 감사합니다.
데이터를 직렬화 한 다음 D3.js에서 시각화하도록 선택할 수도 있습니다. Python 및 Pandas를 사용하여 D3 Force Directed Network Diagram 만들기 ( Jupyter 노트북 도 함께 제공됩니다!)
여기에 요점이 있습니다. 다음 형식으로 그래프 데이터를 직렬화합니다.
import json
json_data = {
"nodes":[
{"name":"Myriel","group":1},
{"name":"Napoleon","group":1},
{"name":"Mlle.Baptistine","group":1},
{"name":"Mme.Magloire","group":1},
{"name":"CountessdeLo","group":1},
],
"links":[
{"source":1,"target":0,"value":1},
{"source":2,"target":0,"value":8},
{"source":3,"target":0,"value":10},
{"source":3,"target":2,"value":6},
{"source":4,"target":0,"value":1},
{"source":5,"target":0,"value":1},
]
}
filename_out = 'graph_data.json'
json_out = open(filename_out,'w')
json_out.write(json_data)
json_out.close()
그런 다음 d3.js를 사용하여 데이터를로드합니다.
d3.json("pcap_export.json", drawGraph);
drawGraph
그러나 루틴 에 대해서는 링크를 참조합니다.
원하는 작업을 수행 할 수있는 NetworkX에서 Javascript 로의 흥미로운 포트가 있습니다. http://felix-kling.de/JSNetworkX/ 참조
보다:
받아 들여지는 대답은 분명히 파이썬 바인딩이있는 다음 프로그램을 제안합니다. http://ubietylab.net/ubigraph/
편집하다
NetworkX의 상호 작용에 대해서는 잘 모르겠지만 확실히 3D 그래프를 만들 수 있습니다. 갤러리에 하나 이상의 예가 있습니다.
http://networkx.lanl.gov/examples/drawing/edge_colormap.html
그리고 '예제'의 또 다른 예. 그러나 이것은 Mayavi가 필요합니다.
http://networkx.lanl.gov/examples/3d_drawing/mayavi2_spring.html
Python을 사용하여 D3.js 네트워크 다이어그램을 자동으로 생성하는 좋은 예가 있습니다. http://brandonrose.org/ner2sna
멋진 점은 자동 생성 된 HTML 및 JS로 끝나고 IFrame이있는 노트북에 대화 형 D3 차트를 포함 할 수 있다는 것입니다.
라이브러리 d3graph
는 파이썬 내에서 강제 방향 d3 그래프를 빌드합니다. 에지 가중치를 기준으로 네트워크를 "중단"하고 노드 위로 마우스를 가져가 자세한 정보를 볼 수 있습니다. 노드를 두 번 클릭하면 노드와 연결된 가장자리에 초점이 맞춰집니다.
pip install d3graph
예:
source = ['node A','node F','node B','node B','node B','node A','node C','node Z']
target = ['node F','node B','node J','node F','node F','node M','node M','node A']
weight = [5.56, 0.5, 0.64, 0.23, 0.9,3.28,0.5,0.45]
# Import library
from d3graph import d3graph, vec2adjmat
# Convert to adjacency matrix
adjmat = vec2adjmat(source, target, weight=weight)
print(adjmat)
# target node A node B node F node J node M node C node Z
# source
# node A 0.00 0.0 5.56 0.00 3.28 0.0 0.0
# node B 0.00 0.0 1.13 0.64 0.00 0.0 0.0
# node F 0.00 0.5 0.00 0.00 0.00 0.0 0.0
# node J 0.00 0.0 0.00 0.00 0.00 0.0 0.0
# node M 0.00 0.0 0.00 0.00 0.00 0.0 0.0
# node C 0.00 0.0 0.00 0.00 0.50 0.0 0.0
# node Z 0.45 0.0 0.00 0.00 0.00 0.0 0.0
# Example A: simple interactive network
out = d3graph(adjmat)
# Example B: Color nodes
out = d3graph(adjmat, node_color=adjmat.columns.values)
# Example C: include node size
node_size = [10,20,10,10,15,10,5]
out = d3graph(adjmat, node_color=adjmat.columns.values, node_size=node_size)
# Example D: include node-edge-size
out = d3graph(adjmat, node_color=adjmat.columns.values, node_size=node_size, node_size_edge=node_size[::-1], cmap='Set2')
# Example E: include node-edge color
out = d3graph(adjmat, node_color=adjmat.columns.values, node_size=node_size, node_size_edge=node_size[::-1], node_color_edge='#00FFFF')
# Example F: Change colormap
out = d3graph(adjmat, node_color=adjmat.columns.values, node_size=node_size, node_size_edge=node_size[::-1], node_color_edge='#00FFFF', cmap='Set2')
# Example H: Include directed links. Arrows are set from source -> target
out = d3graph(adjmat, node_color=adjmat.columns.values, node_size=node_size, node_size_edge=node_size[::-1], node_color_edge='#00FFFF', cmap='Set2', directed=True)
titanic-case의 대화 형 예제는 https://erdogant.github.io/docs/d3graph/titanic_example/index.html https://erdogant.github.io/hnet/pages/html/Use%20Cases 에서 찾을 수 있습니다. .html