任何人都可以推荐一个Python库,可以做interactive图形可视化?Python的等价物D3.js
我特别想要一些像d3.js但python
,理想情况下它也是3D。
我已经看过:
- NetworkX - 它只做
Matplotlib
情节和那些似乎是2D。我没有看到任何形式的互动,就像d3.js
给出的那样,例如拉动节点。 - graph-tool - 它只有2D图,并有非常缓慢的交互图。
任何人都可以推荐一个Python库,可以做interactive图形可视化?Python的等价物D3.js
我特别想要一些像d3.js但python
,理想情况下它也是3D。
我已经看过:
Matplotlib
情节和那些似乎是2D。我没有看到任何形式的互动,就像d3.js
给出的那样,例如拉动节点。参见:
Is there a good interactive 3D graph library out there?
接受的答案提出了以下方案,该方案显然有python绑定: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
有NetworkX的为Javascript一个有趣的端口可能会做你想要什么。请参阅http://felix-kling.de/JSNetworkX/
这可能工作....你能向我推荐文件吗?我怎么会输出一个图形从python到这个JavaScript库...?我想先在python中生成它...或者我将如何加载它? –
我从来没有使用JSNetworkX,所以我不知道它是如何工作的。 – Aric
@EiyrioüvonKauyf:输入与Python中的输入相同,例如,列表或字典的字典列表。您可以使用Python构建图表,将其转换为列表列表并将其转换为JSON。 –
您可以使用d3py一个生成嵌入d3.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()
为我工作,但我不得不编辑其中一行到'with d3py.NetworkXFigure(G,width = 500,height = 500,host =“localhost”)为p:'。我在github上检查了_d3py_的最新提交(SHA:4e92a90f4003370bc086e0f57b19fca1bd4e8fba) –
不幸的是,d3py没有被积极地开发 - 文森特是现代等价物(与Vega/d3.js的Python接口),但是psychemedia的答案在下面(导出网络x到json然后在d3.js中渲染)可能是最干净的。 –
一个配方,我已经使用(这里描述:Co-Director Network Data Files in GEXF and JSON from OpenCorporates Data via Scraperwiki and networkx)运行如下:
的networkx JSON exporter采取以下形式:
from networkx.readwrite import json_graph
import json
print json.dumps(json_graph.node_link_data(G))
另外,您可以export the network作为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)
结帐python-nvd3。它是nvd3的python包装。看起来比d3.py更酷,也有更多图表选项。
你看过文森特吗? Vincent使用Python数据对象并将它们转换为Vega可视化语法。 Vega是构建在D3之上的更高级别的可视化工具。与D3py相比,vincent repo最近更新了。虽然这些例子都是静态的D3。
更多信息:
的图表可以在IPython中观看,只需添加以下代码
vincent.core.initialize_notebook()
或输出到JSON,您可以在Vega在线编辑器(http://trifacta.github.io/vega/editor/)中查看JSON输出图或在您的Python服务器本地查看它们。有关查看的更多信息可以在上面的pypi链接中找到。
不知道什么时候,但熊猫软件包应该在某个时候有D3集成。 http://pandas.pydata.org/developers.html
Bokeh是一个支持交互式可视化的Python可视化库。其主要输出后端是HTML5 Canvas并使用客户端/服务器模型。
[文森特正在出路](https://github.com/wrobstory/vincent#status) - 看起来有一些替代品,但我不确定它与ipython的紧密联系,他们将会是.. – naught101
Plotly支持交互式2D和3D图形。图表用D3.js呈现,可以用Python API,matplotlib,ggplot for Python,Seaborn,prettyplotlib和pandas来创建。您可以放大,平移,打开和关闭轨迹,并查看悬停上的数据。图可以嵌入到HTML,应用程序,仪表板和IPython笔记本中。以下是显示交互性的temperature graph。有关更多示例,请参阅IPython Notebookstutorials的图库。
的docs提供了支持的图形类型和代码段的例子。
具体到你的问题,你也make interactive plots从NetworkX可以。
对于与Python的3D绘图,可以使三维散点,线和曲面图是类似的互动。绘图使用WebGL进行渲染。例如,请参阅英国掉期利率的a 3D graph。
披露:我在Plotly队。
另一个选项是bokeh刚刚进入版本0.3。
我会建议使用mpld3,它结合了D3js JavaScript可视化与python的matplotlib。
安装和使用非常简单,它有一些很酷的插件和互动的东西。
产生可方便地嵌入withing使用其离线API您的私人服务器或网站的HTML页面高度互动的图表做一些很酷的东西。
更新: 我注意把握其3D绘图功能,2D图形是真棒 感谢
注意这是_chart_可视化...该问题请求_graph_可视化。 (我很欣赏这些短语通常是混合的!) – j6m8
我得在这里使用Python自动生成D3.js网络图一个很好的例子:http://brandonrose.org/ner2sna
很酷的事情是,你最终自动生成HTML和JS并可以嵌入在笔记本互动D3图表与一个IFrame
你会想产生networkx的图形,然后在D3操纵。 Ĵ如果你正在寻找基于浏览器的版本。 – kreativitea
@kreativitea确定....我会如何做到这一点理想: 图形数据(通过API调用Python) - > Python(机器学习材料) - > Django /东西+ D3.js(可视化) - >漂亮图片和网站:) –