SAS软件绘制桑基图sankey
桑基图,也叫桑基能量分流图或者桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小,所有主支宽度的总和应与所有分出去的分支宽度的总和相等,保持能量的平衡,非常适用于用户流量等数据的可视化分析。通常应用于能源、材料成分、金融等数据的可视化分析。因1898年Matthew Henry Phineas Riall Sankey绘制的“蒸汽机的能源效率图”而闻名,此后便以其名字命名为“桑基图”。
桑基图一般分为nodes(柱体部分)和links(条带部分)两部分。
绘图数据前期准备
因为桑基图分为nodes(柱体部分)和links(条带部分)两部分,所以绘制桑基图前需要将原始数据转换为包含每个node节点相关信息的数据集及包含前一节点进入下一节点相关信息的links数据集。
下面以有图数据为例,进行演示绘制桑基图的数据集前期准备。
此数据信息如下:
subjid(受试者ID)、cycstt01/cycstt02/cycstt03/cycstt04/cycstt05/cycstt06(对应受试者进入对应node节点的状态)
随后将上述原始数据集转换为进入**%sankeyplot**宏前所需的数据集:nodes(柱体部分)和links(条带部分)两个数据集。
下图是nodes数据集所需相关变量:
下图是links数据集所需相关变量:
%sankeyplot宏参数简述:
%sankeyplot(nodes_data= /*nodes数据集(桑基图柱体部分)*/
,links_data= /*links数据集(桑基图条带部分)*/
,barwidth= /*指定桑基图柱体的宽度(0, 1]*/
,interpol=/*指定桑基图条带的拟合方式(LINEAR线性 | COSINE用COS拟合)。*/
,ybystep=/*指定Y轴的间隔*/
,node_transparency=/*指定柱体颜色透明度 (0, 1]*/
,graphics_options=/*指定graphics可选参数*/
,xaxisopts=/*指定layout overlay的X轴属性*/
,yaxisopts=/*指定layout overlay的Y轴属性*/
,node_catlabel_opts=/*指定是否添加SEGMENTLABEL,即对应柱体块的比例值*/
,add_annods=/*指定外部导入的annotate dataset名称*/
,plotyn=/*指定是否绘制图形还是只衍生绘图相关数据及template程序*/
,debug=);
代码及测试数据集见:
https://github.com/xinweizhong/SAS-sankeyplot