【问题标题】:Python graph like windirstat?像windirstat这样的Python图?
【发布时间】:2012-01-15 18:15:53
【问题描述】:

我有兴趣使用 python 根据正方形的大小(以及可选的颜色)制作表示值大小的图表。基本上,我正在寻找一种方法来概述一堆值,例如旧程序windirstat 对硬盘驱动器的使用(它基本上使一个大正方形代表您的硬盘驱动器,然后较小的正方形构成内部区域它代表不同的程序,方块越大文件越大,颜色表示文件的类型)。我对 matplotlib 相当熟悉,我认为用它做这样的事情是不可能的。是否有任何其他 python 包可以提供帮助?如果不是,对更低级别的东西有什么建议吗?我想如果我能找到一种以编程方式绘制框的方法,我可以手动完成(我并不关心格式,但导出 SVG 和 PNG 的选项会很好)。

最终,最好让它像 windirstat 那样具有交互性,如果您将鼠标悬停在特定方块上,您会获得更多信息,如果您点击它,也许您会进去查看那个特定正方形的构成。我只熟悉用于 GUI 的 wxpython,不确定它是否可以用于这样的事情。不过现在我很乐意输出它们。

非常感谢! 亚历克斯

编辑: 谢谢大家,你们的回答都帮了大忙。

【问题讨论】:

  • “我对 matplotlib 相当熟悉,我认为用它做这样的事情是不可能的。” matplotlib 的限制是什么?我认为它可以绘制不同大小的正方形......
  • 好吧,我想我正在寻找类似 Hinton 图的东西,MatPlotLib can draw,但框之间没有空格。它更像是一个饼图,但是是方形的。

标签: python matplotlib diagram treemap treemaps


【解决方案1】:

您正在寻找Treemapping 算法。实现后,您可以将输出(应该是矩形)转换为任何可以绘制分层矩形的绘图命令。

编辑:

更多链接和信息:

如果您不介意阅读论文,基于浏览器的 d3 库提供了“方形”树形图 (js implementation)。他们通过Bruls, Huizing, and van Wijk 引用了这篇论文。 (这也是维基百科文章的引文3)

我会搜索链接的 Wikipedia 文章中列出的算法。例如,他们还链接到this 文章,该文章描述了一种“混合树图”算法。该论文最后还包括一些有趣的部分,描述了向非矩形形状的转换。

Squarified 显然是最常见的品种。上面的链接应该足以让您找到解决方案,甚至直接移植 d3 实现。但是,了解 d3 模型(类似于 jQuery 的声明形式)的成本可能有点高。不过,乍一看,实现似乎相对简单。

【讨论】:

【解决方案2】:

Squaremap 这样做。我没用过(我只从RunSnakeRun知道)而且它的文档严重缺乏,但它似乎可以工作。

【讨论】:

  • 谢谢,这看起来确实像我正在寻找的东西,我已经下载了它,但你说得对,文档很漂亮......不存在。
  • 尝试破译 RunSnakeRun 源码,或者联系作者。这可能需要很多工作,但可能不如自己编写相同的东西那么多——也许一旦你理解了代码,你甚至可以改善这种情况。
猜你喜欢
  • 1970-01-01
  • 2019-04-09
  • 1970-01-01
  • 2020-08-04
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
  • 2011-08-02
  • 2013-08-12
相关资源
最近更新 更多