绘制分层定量数据

时间:2019-09-12 23:11:18

标签: python matplotlib visualization hierarchical-data

我正在尝试可视化一些可以分层汇总的定量数据。数据的排列方式使每个节点可以:

  • 有子节点,该节点的值为子节点的值的平均值。
  • 没有设置值的子项(是终端)

例如:

A = mean(AA, AB) = mean(0.75 + 0.85) = 0.8
AA = mean(AAA, AAB) = mean(0.6 + 0.9) = 0.75
AAA = 0.6
AAB = 0.9
AB = 0.85

我目前的计划是这样的数字:

enter image description here

节点A在显示其子项的图形上方居中,而AD在显示其子项的子图形上方居中,等等...

我当前的解决方案是使用matplotlib和gridspec递归地处理它(遍历层次结构,使用gridspec将绘图区域分为顶部一行和其余部分,然后在下面一行的列中递归)。它“有效”,但是我要处理很多小情况,例如:

  • 确保最左边的图形具有y轴标签,这在第二列需要知道它是最左边的真实图形的情况下会很尴尬
  • 确保CA-CB-CC等数字在下一行之前终止,不会超出其行
  • 处理图之间的垂直填充,使长标签可以旋转45度而不会重叠
  • 在使用gridspec时,子图不一定总是垂直对齐的(某些子图比其他子图高或短)

要抓住这些问题,我必须传递很多状态并修复极端情况。是否有其他更好的绘图库或使用matplotlib的其他方法可能会更好?

编辑: 在我当前的尝试中添加带有递归模式的彩色图形。
*首先(顶层)调用将所有内容划分为绿色框(2行,最底行分为3个列),然后递归地分别绘制三列 *第二个调用(黄色)将左下方分为两行,并在其子列上递归 *第三次通话(橙色)... *第四通电话(红色)...

None

缺点是我不认为我可以轻松地在给定的行上进行共享的y轴,因为它们与邻居是孤立的。唯一具有该上下文的调用者是顶层,因此之后,我必须深入了解所有图并链接其y轴。

0 个答案:

没有答案