首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAS SGPLOT中不同组的造型

SAS SGPLOT中不同组的造型
EN

Stack Overflow用户
提问于 2019-01-22 14:00:51
回答 2查看 2.7K关注 0票数 0

我试图生成一个具有多个分组的图。示例数据代码是:

proc排序data=sashelp.cars out=cars;按DriveTrain;其中n(圆柱);运行;

我使用dattrmap为不同的组添加了不同的颜色,如下所示:

数据MyAttrMap;长度MARKERCOLOR CONTRASTCOLOR颜色$25;ID='myreg';值=‘All’;MARKERCOLOR='red';MARKERCOLOR=‘red’;MARKERSYMBOL =‘圆形’;输出;ID='myreg';值=‘前沿’;MARKERCOLOR=‘蓝色’;颜色=‘蓝色’;MARKERSYMBOL =‘圆形’;输出;ID='myreg1';值=‘USA’;CONTRASTCOLOR=‘黄’;颜色=‘黄色’;Asia=‘myreg1’;‘值’COCO欧洲;‘color’=‘黑色’;‘黑色’;‘’;‘亚洲’‘;’;‘,’‘;’,‘’;‘’;‘CONTRASTCOLOR=‘绿色’;颜色=‘绿色’;color>输出;运行;proc sgplot data=work.cars dattrmap=MyAttrMap;hbarparm category=enginesize response=马力/群=驱动列车barwidth=.5 attrid=myreg name= 'dt‘;X=MPG_City Y=enginesize /group=origin name=’原产地‘attrid=myreg1;密钥传奇’dt‘/标题=’驱动列车‘location=outside position=bottom;键传奇’起源‘/标题=’起源‘location=outside position=bottom;barwidth=.5 in ('All’'Front');run;

创建Attrmap的目的是为OriginDriveTrain提供不同的颜色,但是,在创建输出时,应用于DriveTrain的颜色相同。

我还尝试使用Proc模板来更改样式,如下所示:

/*Different颜色来自于上面使用的*/ proc模板;定义样式MyStyle;父= Styles.Listing;样式graphdata1 / MARKERSYMBOL =‘圆形’LINESTYLE =1 CONTRASTCOLOR =唇色=红色;样式graphdata2 / MARKERSYMBOL =‘圆形’LINESTYLE =1 CONTRASTCOLOR = stybr颜色=黄色;graphdata3 / MARKERSYMBOL =‘圆形’LINESTYLE =1 CONTRASTCOLOR = mog颜色=绿色;样式graphdata4 / MARKERSYMBOL =‘圆形’LINESTYLE =1 CONTRASTCOLOR =棕色=粉红色;样式graphdata5 / MARKERSYMBOL =‘圆形’LINESTYLE =1 CONTRASTCOLOR =黑色=灰色;

但仍然取得了相同的结果。有谁能告诉我我做错了什么,或者如何让这件事起作用?我用的是SAS 9.3。

我遇到的另一个问题是排序。我想对这些条子进行排序,这样同样的起源就会出现在一起,并以马力来计算。我使用sortkey=national进行排序,并按照SAS的建议使用grouporder=data进行排序,但这并没有改变输出中的顺序。任何帮助都是非常感谢的。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-22 18:11:26

检查属性映射数据集。因为您没有为ID列指定长度,所以它们被截断,并且不匹配您的数据,因此它们没有得到正确的分配。

简化您的问题后,我分配了所有用于测试的元素:

我还假设这是由于日志中的错误而模拟出来的。

代码语言:javascript
复制
proc sort data=sashelp.cars out=cars;
    by DriveTrain;
    where n(Cylinders);
run;

data MyAttrMap;
    length ID $10. linecolor MARKERCOLOR CONTRASTCOLOR fillcolor color value $25;
    ID='myreg1';
    value='USA';
    contrastcolor='cxaf8dc3';
    LINECOLOR='cxaf8dc3';
    MARKERCOLOR='cxaf8dc3';
    fillcolor='cxaf8dc3';
    output;
    ID='myreg1';
    value='Europe';
    contrastcolor='cx7fbf7b';
    LINECOLOR='cx7fbf7b';
    MARKERCOLOR='cx7fbf7b';
    fillcolor='cx7fbf7b';
    output;
    ID='myreg1';
    value='Asia';
    contrastcolor='cx91bfdb';
    LINECOLOR='cxfc8d59';
    MARKERCOLOR='cxfc8d59';
    fillcolor='cxfc8d59';
    output;
run;

ods graphics / attrpriority=none;

proc sgplot data=work.cars dattrmap=MyAttrMap;
    scatter X=MPG_City Y=enginesize /group=origin name='origin' attrid=myreg1;
    where DriveTrain in ('All' 'Front');
run;
票数 0
EN

Stack Overflow用户

发布于 2019-01-22 15:32:16

您可能会发现SGPANEL是一个更好的选项,可以直观地显示不同组的发行版。

代码语言:javascript
复制
ods html style=normal;
ods graphics / height=900px;

proc sgpanel data=sashelp.cars;
  panelby origin 
  / columns=3
  ;

  hbar enginesize 
  / group=drivetrain
    groupdisplay=cluster
  ;

  where 
    DriveTrain in ('Front', 'All')
    and not missing(cylinders)
  ;
run;

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54309957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档