我试图生成一个具有多个分组的图。示例数据代码是:
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的目的是为Origin和DriveTrain提供不同的颜色,但是,在创建输出时,应用于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进行排序,但这并没有改变输出中的顺序。任何帮助都是非常感谢的。

。
谢谢。
发布于 2019-01-22 18:11:26
检查属性映射数据集。因为您没有为值和ID列指定长度,所以它们被截断,并且不匹配您的数据,因此它们没有得到正确的分配。
简化您的问题后,我分配了所有用于测试的元素:
我还假设这是由于日志中的错误而模拟出来的。
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;发布于 2019-01-22 15:32:16
您可能会发现SGPANEL是一个更好的选项,可以直观地显示不同组的发行版。
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;

https://stackoverflow.com/questions/54309957
复制相似问题