博客:流入流出平行图 - 使用 JMP 图形生成器跟踪您的预算流量
杰德·坎贝尔和斯科特·怀斯
02/02/23

平行(或平行坐标)图是一种众所周知的图形,可以对大量高维数据进行可视化分析。 平行图是显示数据内关系的好方法,因为它们跨两个或多个变量连续连接。 该图的一个有用应用是直观地查看跨项目或个人预算的支出流程。 下面显示的是 JMP 图形生成器并行图,显示了 101,000 美元的初始总预算的流出情况。 由于每行分组的大小是根据总金额确定的,因此很容易看出支出流出如何按类别和子类别从右向左分支。 例如,流出 1 中总储蓄(20,000 美元)的最大支出是流出 2 中的 401K 计划(12,000 美元)。
如果除了流出之外,我们还想在平行图中看到总预算的流入,该怎么办? 这给大多数平行图带来了真正的挑战,因为它们假设只有从左到右的单向流。 在我们的例子中,我们确实需要两个流,一个用于流入总量,然后启动另一个流来显示流出。 幸运的是,JMP 图形生成器并行图有一个名为“组合集”的选项,它可以让我们重新启动图形中的流程。
首先我们从数据表的设置开始。我们的第一个连续列“Amt”给出了数据中每行的结束流量,这将帮助我们调整图表的大小。 其余的列都是分类的,为我们提供了对总预算的贡献(“流入”),总预算的列(仅给出了一个小标记“_”),然后我们以最后两个支出列结束(“流出 1”和“流出 2”)。 请注意,我们还将每个列类别金额合并到流标签中。 该数据表称为“预算绩效”,可以在文章末尾的 JMP 公共共享链接中下载(带有图形脚本)。

现在我们准备在图形生成器中构建所谓的流入流出并行图。 分步说明:
- 步骤1)打开数据表“预算绩效”
- 步骤 2) 打开图形生成器并开始填充视图
- 将“流入”、“_”、“流出 1”和“流出 2”放在 X 轴上
- 将“Amt”放在尺码着陆区上
- 将“Outflow 1”放在颜色着陆区上
- 步骤 3) 在顶部图形图标面板菜单上,选择平行图
- 步骤4)在左下平行元素选项中:
- 步骤 5) 右键单击 Y 轴 -> 轴设置
- 第 6 步)绘制平行图
- 步骤 7) 在左上角,选择完成以关闭图形生成器控制面板
图表格式(可选)
- 步骤8)在传说中
- 步骤 9) 在图形生成器红色三角形下
- 步骤 10) 给图表一个更好的标题(“预算绩效”)
- 步骤 11) 右键单击 Z 轴并添加透明参考线以突出显示流动起始边缘
- 在值 0.01、1.01、2.01 和 3.01 处添加参考线
- 将参考线着色为浅灰色并降低至 50% 透明度
- 使线条样式 = 10
现在我们可以看到完整的流入流出平行图。 通过在步骤 4 中选择组合集选项,我们可以看到总预算中的贡献,但随后重新启动流程以显示来自同一区域的流出。 通过“Amt”列调整大小,我们可以按美元适当调整图表中的流分组大小,这样我们就可以看到与其他两个传入来源相比的巨大贡献,例如作业(9 万美元)。 此外,通过“流出 1”着色可以让我们更轻松地追踪总预算的流出。

交互式点击图表中的汽车(11,000 美元)支出部分可以帮助我们进一步追踪流出情况。 因此,对于汽车的初始流出,我们可以看到它如何分解为汽车:维护(1000 美元)、汽车:汽油(2000 美元)和汽车:汽车付款(8000 美元)。

因此,现在当您想要绘制自己的财务或项目预算图表时,您可以使用 JMP Graph Builder 中的流入流出平行图以交互方式可视化我们的流量!下载附件以使用嵌入式脚本进行练习。另外,请参阅以下 JMP 公共链接,在此处与流入流出(流)并行图进行交互。
感谢您分享追踪流程的技巧!我遇到了一个难题,就是如何为流程 1 和流程 2 及以后的条目分配相同的颜色。所以,从您的示例来看,如果每个流程中的条目位于同一轨道,我们需要为每个条目添加带有“:”的“类别名称”。这样对吗?
@qunw我正在抄送@scwise ,以便他能及时看到:感谢您分享追踪流程的技巧!我遇到了一个难题,就是如何在流程1和流程2及以后为同一个项目分配相同的颜色。所以,从您的示例来看,如果每个流程中的项目位于同一轨道,我们需要为每个项目添加一个带有“:”的“类别名称”。这样对吗?
@qunw “:”确保排序,颜色不应该改变,因为流出 1 设置为颜色。

如果您想要获得不同的颜色,您可能需要使用 Value Color Property。 @scwise可能会增加他的想法的排序和着色。
为了更精确地排序,默认按字母顺序排序,A 在底部,Z 在顶部。如果您使用“:”选项,则可以确保排序符合层级顺序。您可以强制 Ecolumn 属性中的值顺序,但如果您需要可视化多个流程,这可能会更加困难,因为由于层级结构,顺序可能并非最佳。
非常感谢您的详细说明!我用我的日期集试了一下这个技巧,成功了!唯一的缺点是它需要对数据集进行一些预处理,因为同一类别会在后续的流出数据中被跟踪。