在SAS中创建热图

时间:2014-10-30 18:07:20

标签: graph sas heatmap

我希望在SAS中创建一个热图。我有一个x,y坐标的大数据集。从阅读到所有内容,我需要创建一个" count"使用类似这样的坐标:

 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;

此代码导致错误消息并且没有图形输出,因为它缺少参数。"#34;任何帮助都会很棒。谢谢!

1 个答案:

答案 0 :(得分:3)

Rick Wicklin在他的博客The DO Loop上做了很好的解释。

您应该查看图形模板语言(GTL)的教程,例如Sanjay Matange(ODS图形系统的主要开发人员,包括GTL)。他写过一本关于这个主题的书,或者你可以阅读他的论文,例如this introduction

基本上,是的,您应该使用x / y变量填充x =和y =,colorresponse =使用定义计数的变量(如何使用红色/蓝色)。

这是一个例子。在这里,我们使用dynamic variables,这意味着您可以在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;