在SAS中创建热力图

3

我希望在SAS中创建热力图。我的数据集非常大,只包含 x,y 坐标。通过阅读相关内容,我需要使用类似以下方式创建坐标的“计数”:

 proc kde data=dataSet;
     bivar X Y / out=outputDataSet;
 run;

下一步,我需要为热力图创建一个模板--我找到了这个样本代码,但我不确定每个部分的作用:
proc template;
   define statgraph heatmapparm;
     begingraph;
       layout overlay;
         heatmapparm x=value1 y=value2 colorresponse=count /
             name="heatmapparm" xbinaxis=false ybinaxis=false;
         continuouslegend "heatmapparm" / location=outside valign=bottom;
       endlayout;
     endgraph;
end;
run;

我假设需要将我的变量插入到x和y的位置,将计数插入到colorresponse的位置,然后使用以下代码来获取热力图:

proc sgrender data=outputDataSet template=heatmapparm;
run;

这段代码由于“缺少参数”而导致错误消息和无图形输出。希望能得到帮助。谢谢!

1个回答

3
Rick Wicklin在他的博客The DO Loop中做了很好的解释。
你应该查阅有关图形模板语言(GTL)的教程,例如Sanjay Matange(ODS Graphics系统和GTL的首席开发人员)。他已经写了一本关于这个主题的书,或者你可以阅读他的论文,例如这篇介绍文章
基本上,是的,你应该使用你的x / y变量填充x=和y=,用定义计数的变量填充colorresponse=(如何使它红色/蓝色)。
下面是一个例子。这里我们使用动态变量,这意味着您可以在SGRENDER步骤中定义相关变量。Rick在他的博客文章中展示了这一点,我使用了稍微简化的版本。你可以很可能完全按原样使用PROC TEMPLATE,只需更改SGRENDER以引用你的数据集和变量。 test数据集只是生成一个有趣的热力图的虚构数据。
proc template;
   define statgraph heatmapparm;
    dynamic _X _Y _Z;
     begingraph;
       layout overlay;
         heatmapparm x=_X y=_Y colorresponse=_Z/
             name="heatmapparm" xbinaxis=false ybinaxis=false;
         continuouslegend "heatmapparm" / location=outside valign=bottom;
       endlayout;
     endgraph;
  end;
run;

data test;
  call streaminit(7);
  do x = 1 to 10;
    do y = 1 to 10;
      count_var = rand('Normal',(x+y)/2);
      output;
    end;
  end;
run;


proc sgrender data=test template=heatmapparm;
dynamic _X='x' _Y='y' _Z='count_var';
run;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接