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。

安装和使用非常简单,它有一些很酷的插件和交互式的东西。

http://mpld3.github.io/

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可以为你做一些很酷的东西 在这里输入图像说明

https://plot.ly/

生成高度交互式的graphics,可以使用离线API轻松embedded您的私人服务器或网站的HTML页面。

更新:我注意到它的3D绘图function,二维graphics真棒谢谢

我有一个使用Python在这里自动生成D3.jsnetworking图的好例子: http : //brandonrose.org/ner2sna

很酷的事情是,你最终与自动生成的HTML和JS,并可以embedded交互式D3图表在笔记本与IFrame