D3.js와 동등한 파이썬
대화형 그래프 시각화가 가능한 파이썬 라이브러리 추천해줄 사람?
저는 특별히 d3.js같은 것을 원하지만,python
이상적으로 3D도 가능합니다.
확인해 본 내용:
- 네트워크 X - 실행만 가능합니다.
Matplotlib
줄거리와 그것들은 2D인 것 같습니다.요처럼 요처럼d3.js
노드를 끌어다 놓는 것과 같이. - 그래프 도구 - 2D 플롯만 수행하고 매우 느린 교호작용 그래프를 가집니다.
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()
Plotly는 대화형 2D 및 3D 그래핑을 지원합니다.그래프는 D3.js로 렌더링되며 Python API, matplotlib, Python용 ggplot, Seaborn, Prettyplotlib 및 panda로 만들 수 있습니다.확대/축소, 이동, 트레이스 온/오프 전환 및 호버에서 데이터를 볼 수 있습니다.HTML, 앱, 대시보드 및 IPython 노트북에 플롯을 내장할 수 있습니다.아래는 상호작용성을 보여주는 온도 그래프입니다.자세한 예는 IPython 노트북 튜토리얼 갤러리를 참조하십시오.
문서는 지원되는 플롯 유형과 코드 조각의 예를 제공합니다.
질문과 관련하여 네트워크 X에서 대화형 그림을 만들 수도 있습니다.
Python을 사용한 3D 플롯의 경우 유사하게 상호작용하는 3D 산점도, 선도 및 표면도를 만들 수 있습니다.그림은 WebGL로 렌더링됩니다.예를 들어, 영국 스왑 속도의 3D 그래프를 참조하십시오.
공개:저는 플로틀리 팀입니다.
빈센트 봤어요?빈센트는 파이썬 데이터 객체를 가져와 베가 시각화 문법으로 변환합니다.베가는 D3 위에 만들어진 더 높은 수준의 시각화 도구입니다.D3py에 비해 빈센트 레포는 최근에 업데이트 되었습니다.예들이 모두 정적 D3이긴 하지만요.
추가 정보:
그래프는 Ipython에서 볼 수 있으며, 이 코드를 추가하면 됩니다.
vincent.core.initialize_notebook()
또는 Bega 온라인 편집기(http://trifacta.github.io/vega/editor/) 에서 JSON 출력 그래프를 보거나 Python 서버에서 로컬로 볼 수 있는 JSON으로 출력합니다.보기에 대한 자세한 정보는 위의 pypi 링크에서 확인할 수 있습니다.
언제인지는 모르겠지만 팬더 패키지는 어느 시점에서 D3 통합이 되어야 합니다.http://pandas.pydata.org/developers.html
Bokeh는 대화형 시각화를 지원하는 Python 시각화 라이브러리입니다.주 출력 백엔드는 HTML5 Canvas이며 클라이언트/서버 모델을 사용합니다.
예: http://continuumio.github.io/bokehjs/
제가 사용한 한 가지 방법(여기에 설명: Scraperwiki 및 networkx를 통한 OpenCorporate Data의 GEXF 및 JSON의 공동 책임자 네트워크 데이터 파일)은 다음과 같이 실행됩니다.
- networkx를 사용하여 네트워크 표현 생성
- 네트워크를 JSON 파일로 내보냅니다.
- JSON을 d3.js.로 가져옵니다(networkx는 d3.js가 가져올 수 있는 트리와 그래프/네트워크 표현을 모두 내보낼 수 있습니다).
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으로 간 bokeh입니다.
pyd3를 추천해주신 분들은 더 이상 개발이 활발하지 않고 빈센트를 지목합니다.빈센트는 더이상 개발이 활발하지 않으며 알테어를 사용할 것을 권장합니다.
그래서 만약 당신이 pythonic d3를 원한다면, altair를 사용하세요.
d3py와 빈센트의 후계자인 https://altair-viz.github.io/ 을 시도해 보세요.참고 항목
- https://altair-viz.github.io/gallery/index.html
- https://speakerdeck.com/jakevdp/bespoke-visualizations-with-a-declarative-twist
python-nvd3을 확인해보세요.nvd3용 파이썬 포장지입니다.d3.py 보다 시원하고 차트 옵션도 더 많습니다.
은 d3graph
파이썬 내에서 힘을 이용한 d3-graph를 구축할 것입니다.에지 가중치를 기준으로 네트워크를 "차단"하고 노드 위를 맴돌면 더 많은 정보를 얻을 수 있습니다.노드를 두 번 클릭하면 노드와 연결된 가장자리가 강조 표시됩니다.
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)
타이타닉 케이스의 상호작용적인 예는 여기에서 찾을 수 있습니다: https://erdogant.github.io/docs/d3graph/titanic_example/index.html https://erdogant.github.io/hnet/pages/html/Use%20Cases.html
저는 파이썬의 매트플롯리브에 D3js 자바스크립트 시각화를 결합한 mpld3를 사용하는 것을 제안합니다.
설치와 사용은 정말 간단하며 멋진 플러그인과 대화형 물건들이 있습니다.
플롯리는 당신을 위해 멋진 것들을 할 수 있습니다.
오프라인 API를 사용하여 개인 서버 또는 웹 사이트의 HTML 페이지에 쉽게 임베딩할 수 있는 대화형 그래프를 생성합니다.
업데이트: 3D 플롯 기능에 대해 잘 모르겠습니다. 2D 그래프는 굉장합니다. 감사합니다.
데이터를 직렬화한 다음 여기서 하는 것처럼 D3.js로 시각화하도록 선택할 수도 있습니다.Python & Pandas를 사용하여 D3 Force Directed Network Diagram(D3 Force Directed Network Diagram)을 만들 수 있습니다(주피터 노트북도 함께 제공됩니다!)
요점은 이렇습니다.그래프 데이터를 다음과 같은 형식으로 직렬화합니다.
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
그러나 링크를 참조합니다.
당신이 원하는 것을 할 수 있는 네트워크 X에서 자바스크립트로의 흥미로운 포트가 있습니다.http://felix-kling.de/JSNetworkX/ 참조
Python을 사용하여 D3.js 네트워크 다이어그램을 자동으로 생성하는 좋은 예가 있습니다. http://brandonrose.org/ner2sna
멋진 점은 자동 생성 HTML 및 JS를 사용하게 되고 I 프레임이 있는 노트북에 대화형 D3 차트를 내장할 수 있다는 것입니다.
언급URL : https://stackoverflow.com/questions/12977517/python-equivalent-of-d3-js
'programing' 카테고리의 다른 글
카르마 테스트:오류 유형:읽기 전용 속성에 할당하려고 시도했습니다. (0) | 2023.09.26 |
---|---|
워드프레스에 http 헤더 추가 (0) | 2023.09.26 |
사용자가 마우스를 이동하지 않고 브라우저 커서를 "대기"에서 "자동"으로 이동 (0) | 2023.09.26 |
ID 또는 이름이 앵커인 웹 페이지 위치에 대한 하이퍼링크 기능 (0) | 2023.09.26 |
XML과 Java 코드를 통해 OnClickListener 인터페이스를 사용하는 것은 어떻게 다릅니까? (0) | 2023.09.26 |