Graph 注释Syntax PROC SGRENDER SAS

Graph 注释Syntax PROC SGRENDER SAS,graph,sas,Graph,Sas,我有一个与下面创建的数据集非常相似的数据集。我想在同一张图上绘制各州得分的年度趋势图。此外,我还想对图表中发生事情的部分进行着色(在本例中是分数下降)。比方说,我预计这次活动将在2011年至2013年之间举行。我想在这些年里给一个浅灰色的长方形加上阴影。我认为我的代码很接近,但语法不太正确 任何帮助完成这一点都将不胜感激。另外,关于清理proc模板语句的任何建议(都需要吗?或者我可以合并成一个吗?)。谢谢 编辑:我认为主要的问题是annorec数据步骤的语法 data statescores;

我有一个与下面创建的数据集非常相似的数据集。我想在同一张图上绘制各州得分的年度趋势图。此外,我还想对图表中发生事情的部分进行着色(在本例中是分数下降)。比方说,我预计这次活动将在2011年至2013年之间举行。我想在这些年里给一个浅灰色的长方形加上阴影。我认为我的代码很接近,但语法不太正确

任何帮助完成这一点都将不胜感激。另外,关于清理proc模板语句的任何建议(都需要吗?或者我可以合并成一个吗?)。谢谢

编辑:我认为主要的问题是annorec数据步骤的语法

 data statescores;
        input state $ year score;
        cards;
    NC 2010 75
    NC 2011 77
    NC 2012 72
    NC 2013 85
    NC 2014 87
    SC 2010 72
    SC 2011 73
    SC 2012 60
    SC 2013 79
    SC 2014 76
    VA 2010 80
    VA 2011 80
    VA 2012 79
    VA 2013 81
    VA 2014 83
    ;
    run;

data drop;                                                                                                                        
   input startdate enddate;                                                                                             
   datalines;                                                                                                                           
2011 2013                                                                                                                        
;   

data annorec;
/*   length function style color $8;       */
    retain xsys '2' ysys '1' when 'b';                                                                                                    
    set drop;                                                                                                       
    function='rectangle';
    height=.4;
    width=2; 
    x=startdate;                                                                                                                        
    y=60;  
    display="all";
    FILLCOLOR='LTGRAY'; 
    output;                                                                                                           
/*   function='bar';             */
/*   x=enddate;                  */
/*   y=90;                     */
/*   color='ltgray';           */
/*   style='solid';             */
/*   output;                      */
run;     

proc template;
    define style styles.stocks;
    parent=styles.listing;
    style GraphData1 from GraphData1 /
        ContrastColor=blue
        Color=red
        MarkerSymbol="CircleFilled"
        Linestyle=1;
    style GraphData2 from GraphData2 /
        ContrastColor=brown
        Color=blue
        MarkerSymbol="none"
        Linestyle=2;
    style GraphData3 from GraphData3 /
        ContrastColor=orange
        Color=orange
        MarkerSymbol="none"
        Linestyle=2;
end;
run;

proc template;
    define statgraph trend;
    begingraph;
    entrytitle "Scores for NC, SC, and VA";
    discreteattrmap name="stockname" / ignorecase=true;
    value 'NC' /
    markerattrs=GraphData1(color=red symbol=circlefilled)
    lineattrs=GraphData1(color=red pattern=solid);
    value 'SC' /
    markerattrs=GraphData2(color=orange)
    lineattrs=GraphData2(color=green pattern=dot);
    value 'VA' /
    markerattrs=GraphData3(color=blue)
    lineattrs=GraphData3(color=blue pattern=dot);
    enddiscreteattrmap;
    discreteattrvar attrvar=stockmarkers var=stock
    attrmap="stockname";
    layout overlay;
    seriesplot x=year y=score /
    group=state
    display=(markers)
    name="scores";
    discretelegend "scores" / title="State Scores";
    endlayout;
    endgraph;
    end;
run;
/* Plot the score trends */
ods pdf file="/sasdata/username/testgraph.pdf";
ods pdf style=styles.stocks;


proc sgrender data=statescores template=trend sganno=annorec;
run;
quit;

ods pdf close;

如果可以避免的话,我会尽量避免在GTL中使用离散属性映射。如果你只有几个州,你真的不需要它;即使在上面的代码中,它也只是覆盖在前面的模板步骤中设置的一些内容。属性映射对于SGPLOT来说很好,但在我的经验中,它是GTL中的一个难题

在这种情况下,您应该尝试使用带状图生成灰色带状。玩一些,但这基本上会给你你想要的:

proc sgplot data=statescores;
series x=year y=score/ group=state;
band y=score upper=2013 lower=2011 /transparency=0.8 ;
run;
这使得一个有四行代码的绘图看起来非常漂亮,另外,如果您想添加颜色,您可以相当容易地(在属性映射数据集中或在模板代码中)添加颜色。一般来说,在SGPlot/GTL世界中,注释数据集通常是不必要的,因为您可以轻松地对图进行分层,并且许多注释可以通过分层图来完成


如果您想查看更详细的代码,我建议您在communities.sas.com上发布,在那里,sas的一些图形开发人员通常会对代码的改进提出建议。

您正在运行的sas版本是什么?服务器上的sas Enterprise Guide 6.1。这不是您的sas版本;但它很可能是9.4,听起来对吗?是的,没错。9.4版谢谢你的帮助,乔。