【问题标题】:Sankey diagrams in PythonPython中的桑基图
【发布时间】:2010-12-09 20:37:25
【问题描述】:

是否有用于生成Sankey diagrams 的 Python 库?

我见过这个list of Sankey diagram applications and libraries,但没有一个是在 Python 中的。

【问题讨论】:

  • 您需要/期望什么样的输出?

标签: python graph visualization diagram sankey-diagram


【解决方案1】:

您可以使用 plotly dash 中的 sankey 图。 https://plot.ly/python/sankey-diagram/

【讨论】:

【解决方案2】:

在我的研究小组中,我们在Jupyter notebooks 中使用来自 Python 的 Sankey 图,并使用开源项目(注意:我是这些项目的开发人员)在输出中嵌入基于 D3/SVG 的 Sankey。

  • floWeaver 为绘制桑基图时经常涉及的数据聚合提供了更多结构,
  • ipysankeywidget 只是画了桑基图。

这两者都基于 d3 库 d3-sankey-diagram,它为标准 d3 sankey 插件添加了一些功能(循环、多种流类型、对布局的更多控制)。

【讨论】:

    【解决方案3】:

    显然 matplotlib 1.1 现在可以做到这一点。 Code and sample output is here.

    以下是演示它可以做什么的屏幕截图。

    【讨论】:

      【解决方案4】:

      我在“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

      我没有为您找到交钥匙解决方案,但我确实找到了一些可能用于解决方案的部件。祝你好运。

      【讨论】:

        猜你喜欢
        • 2016-04-06
        • 2012-04-15
        • 1970-01-01
        • 2018-10-18
        • 2021-05-28
        • 2021-06-20
        • 2018-02-13
        • 1970-01-01
        相关资源
        最近更新 更多