Python相当于D3.js
任何人都可以推荐一个可以做交互式graphics可视化的Python库吗?
我特别想要d3.js,但是对于python
,理想情况下它也是3D。
我曾看过:
- NetworkX – 它只做
Matplotlib
绘图和那些似乎是2D。 我没有看到任何types的互动,就像d3.js
给出的一样,比如拉节点。 - graphics工具 – 它只能做2D图,而且有很慢的交互图。
你可以使用d3py生成embeddedd3.js脚本的xml页面的python模块。 例如 :
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()
你看过文森特吗? 文森特采取Python数据对象,并将其转换为Vega可视化文法。 Vega是构build在D3之上的更高级可视化工具。 与D3py相比,文森特回购已经更新。 虽然这些例子都是静态的D3。
更多信息:
这些图可以在Ipython中查看,只需添加此代码即可
vincent.core.initialize_notebook()
或者输出到JSON,您可以在Vega在线编辑器( http://trifacta.github.io/vega/editor/ )中查看JSON输出图或者在您的Python服务器本地查看它们。 有关查看的更多信息可以在上面的pypi链接中find。
不知道什么时候,但pandas包应该在某个时候有D3集成。 http://pandas.pydata.org/developers.html
Bokeh是一个支持交互式可视化的Python可视化库。 其主要输出后端是HTML5canvas,并使用客户端/服务器模型。
例子: http : //continuumio.github.io/bokehjs/
我已经使用了一个配方(在这里描述: GEXF中的Co-Directornetworking数据文件和来自OpenCorporates Data的JSON,通过Scraperwiki和networkx )运行如下:
- 使用networkx生成networking表示
- 将networking导出为JSON文件
- 将JSON导入到d3.js。 ( networkx可以导出d3.js可以导入的树和graphics/networking表示)。
networkx JSON导出器的格式如下:
from networkx.readwrite import json_graph import json print json.dumps(json_graph.node_link_data(G))
或者,您可以将networking导出为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)
Plotly支持交互式2D和3Dgraphics。 graphics用D3.js呈现,可以用Python API , matplotlib , Python的ggplot , Seaborn , prettyplotlib和pandas创build 。 您可以放大,平移,打开和closures轨迹,并查看hover上的数据。 图可以embedded在HTML,应用程序,仪表板和IPython笔记本中。 以下是显示交互性的温度图表 。 有关更多示例,请参阅IPython笔记本 教程的画廊。
该文档提供了支持的绘图types和代码片段的示例。
具体到你的问题,你也可以从NetworkX 交互式的情节 。
对于使用Python进行三维绘图,可以制作类似交互式的三维散点图,线条和曲面图。 绘图使用WebGL进行渲染。 例如,请参阅英国掉期利率的3D图表 。
披露:我在Plotly团队。
另一种select是刚刚进入版本0.3的散景 。
看看python-nvd3 。 这是一个nv3的python包装。 看起来比d3.py更酷,也有更多的图表选项。
对于那些推荐pyd3的人来说 ,它已经不在积极的发展之中,并且指向了vincent 。 文森特也不再积极发展,并build议使用altair 。
所以如果你想要pythonic d3,可以使用altair。
我会build议使用mpld3,它结合了D3js JavaScript可视化与python的matplotlib。
安装和使用非常简单,它有一些很酷的插件和交互式的东西。
NetworkX有一个有趣的端口可以做你想要的。 见http://felix-kling.de/JSNetworkX/
看到:
那里有一个很好的交互式3Dgraphics库吗?
接受的答案build议以下程序,显然有python绑定: http : //ubietylab.net/ubigraph/
编辑
我不确定NetworkX的交互性,但您绝对可以制作3Dgraphics。 画廊中至less有一个例子:
http://networkx.lanl.gov/examples/drawing/edge_colormap.html
另一个例子就是“例子”。 但是,这个要求你有Mayavi。
http://networkx.lanl.gov/examples/3d_drawing/mayavi2_spring.html
Plotly可以为你做一些很酷的东西
生成高度交互式的graphics,可以使用离线API轻松embedded您的私人服务器或网站的HTML页面。
更新:我注意到它的3D绘图function,二维graphics真棒谢谢
我有一个使用Python在这里自动生成D3.jsnetworking图的好例子: http : //brandonrose.org/ner2sna
很酷的事情是,你最终与自动生成的HTML和JS,并可以embedded交互式D3图表在笔记本与IFrame