【发布时间】:2010-12-09 20:37:25
【问题描述】:
是否有用于生成Sankey diagrams 的 Python 库?
我见过这个list of Sankey diagram applications and libraries,但没有一个是在 Python 中的。
【问题讨论】:
-
您需要/期望什么样的输出?
标签: python graph visualization diagram sankey-diagram
是否有用于生成Sankey diagrams 的 Python 库?
我见过这个list of Sankey diagram applications and libraries,但没有一个是在 Python 中的。
【问题讨论】:
标签: python graph visualization diagram sankey-diagram
您可以使用 plotly dash 中的 sankey 图。 https://plot.ly/python/sankey-diagram/
【讨论】:
在我的研究小组中,我们在Jupyter notebooks 中使用来自 Python 的 Sankey 图,并使用开源项目(注意:我是这些项目的开发人员)在输出中嵌入基于 D3/SVG 的 Sankey。
这两者都基于 d3 库 d3-sankey-diagram,它为标准 d3 sankey 插件添加了一些功能(循环、多种流类型、对布局的更多控制)。
【讨论】:
显然 matplotlib 1.1 现在可以做到这一点。 Code and sample output is here.
以下是演示它可以做什么的屏幕截图。
【讨论】:
我在“Python 图形可视化”上进行了 Google 搜索,发现了一些东西。有几个库具有“弹簧”行为,软件可以平衡图形并使其漂亮;他们为你做了很多工作。但他们画的是带有节点和边的图表,与桑基图完全不同。
“Python sankey”的 Google 搜索没有产生有用的结果。
我在“Python 矢量图形”上进行了一些谷歌搜索,发现了这个非常有希望的结果:
http://pypi.python.org/pypi/Things
使用 Things,显然您在 Inkscape(一个免费的矢量编辑程序)中绘制基本形状,然后您编写 Python 来缩放、旋转等形状以生成图像或动画。应该可以编写 Python 代码来自动使 Sankey 箭头从它们的源头弹开,向上、向下等等。
另请参阅 StackOverflow 关于在 Python 中绘制矢量图的讨论:svg diagrams using python
该页面将我带到:http://cairographics.org/,看起来非常有用。
您链接的博客有一篇关于自动创建桑基图的文章:
http://www.sankey-diagrams.com/sankey-diagrams-are-directed-weighted-graphs/
http://www.svgopen.org/2003/papers/RenderingGraphs/index.html
我没有为您找到交钥匙解决方案,但我确实找到了一些可能用于解决方案的部件。祝你好运。
【讨论】: