SAS:将两个图按组合并为一个
SAS: Merge two plots into one by group
我有两个地块想合并为一个。每个图代表当年相应累积测试结果的存在/不存在观察结果的比例
所以在情节上我想看到条形图,并排显示测试分数组,但计算存在与不存在的数量
为了表示这个问题,我目前有:
data test_scores;
do i = 1 to 200;
score = ranuni(200);
output;
end;
drop i;
run;
data test_scores_2;
set test_scores;
if _n_ le 100 then flag = 0;
else flag = 1;
run;
data test_scores_2_0 test_scores_2_1;
set test_scores_2;
if flag = 0 then output test_scores_2_0;
else if flag = 1 then output test_scores_2_1;
run;
PROC GCHART
DATA=test_scores_2_0
;
VBAR
score
/
CLIPREF
FRAME
LEVELS=20
TYPE=PCT
COUTLINE=BLACK
RAXIS=AXIS1
MAXIS=AXIS2
;
RUN;
QUIT;
PROC GCHART
DATA=test_scores_2_1
;
VBAR
score
/
CLIPREF
FRAME
LEVELS=20
TYPE=PCT
COUTLINE=BLACK
RAXIS=AXIS1
MAXIS=AXIS2
;
RUN;
QUIT;
目前的柱状图总和应为 100%
不存在的柱状图应总计为 100%
TIA
proc sgplot
救援。使用 group=
选项指定两个单独的组。将透明度设置为 50%,这样一个直方图就不会覆盖另一个。
proc sgplot data=test_scores_2;
histogram score / group=flag transparency=0.5 binwidth=.05;
run;
使用 Proc GCHART
,您可以使用 VBAR
选项 GROUP=
和 G100
来获取表示组内百分比的条形图。这在组具有不同计数时很有用。
SUBGROUP=
选项根据子组变量的不同取值分割竖线,并自动生成对应子组的着色和图例。
当 SUBGROUP
变量(或值)对应于 1:1 组时,结果是每个组具有不同颜色的图表和对应于该组的图例。
例如,修改您的数据,使第 1 组有 50 个计数,第 2 组有 150 个计数:
data test_scores;
do _n_ = 1 to 200;
score = ranuni(200);
flag = _n_ > 50;
output;
end;
run;
axis1 label=("score");
axis2 ;
axis3 label=none value=none;
PROC GCHART data=test_scores;
VBAR score
/ levels=10
GROUP=flag G100
SUBGROUP=flag
SPACE=0 TYPE=PERCENT freq gaxis=axis3 maxis=axis1 ;
run;
输出
类似的图表显示了值与组值不同的子组变量的影响。
data test_scores;
do _n_ = 1 to 200;
subgroup = ceil(5 * ranuni(123)); * random 1 to 5;
score = ranuni(200);
flag = _n_ > 50;
output;
end;
run;
axis1 label=("score");
axis2 ;
axis3 label=none value=none;
PROC GCHART data=test_scores;
VBAR score
/ levels=10
GROUP=flag G100
SUBGROUP=subgroup /* has integer values in [1,5] */
SPACE=0 TYPE=PERCENT freq gaxis=axis3 maxis=axis1;
run;
我有两个地块想合并为一个。每个图代表当年相应累积测试结果的存在/不存在观察结果的比例
所以在情节上我想看到条形图,并排显示测试分数组,但计算存在与不存在的数量
为了表示这个问题,我目前有:
data test_scores;
do i = 1 to 200;
score = ranuni(200);
output;
end;
drop i;
run;
data test_scores_2;
set test_scores;
if _n_ le 100 then flag = 0;
else flag = 1;
run;
data test_scores_2_0 test_scores_2_1;
set test_scores_2;
if flag = 0 then output test_scores_2_0;
else if flag = 1 then output test_scores_2_1;
run;
PROC GCHART
DATA=test_scores_2_0
;
VBAR
score
/
CLIPREF
FRAME
LEVELS=20
TYPE=PCT
COUTLINE=BLACK
RAXIS=AXIS1
MAXIS=AXIS2
;
RUN;
QUIT;
PROC GCHART
DATA=test_scores_2_1
;
VBAR
score
/
CLIPREF
FRAME
LEVELS=20
TYPE=PCT
COUTLINE=BLACK
RAXIS=AXIS1
MAXIS=AXIS2
;
RUN;
QUIT;
目前的柱状图总和应为 100% 不存在的柱状图应总计为 100%
TIA
proc sgplot
救援。使用 group=
选项指定两个单独的组。将透明度设置为 50%,这样一个直方图就不会覆盖另一个。
proc sgplot data=test_scores_2;
histogram score / group=flag transparency=0.5 binwidth=.05;
run;
使用 Proc GCHART
,您可以使用 VBAR
选项 GROUP=
和 G100
来获取表示组内百分比的条形图。这在组具有不同计数时很有用。
SUBGROUP=
选项根据子组变量的不同取值分割竖线,并自动生成对应子组的着色和图例。
当 SUBGROUP
变量(或值)对应于 1:1 组时,结果是每个组具有不同颜色的图表和对应于该组的图例。
例如,修改您的数据,使第 1 组有 50 个计数,第 2 组有 150 个计数:
data test_scores;
do _n_ = 1 to 200;
score = ranuni(200);
flag = _n_ > 50;
output;
end;
run;
axis1 label=("score");
axis2 ;
axis3 label=none value=none;
PROC GCHART data=test_scores;
VBAR score
/ levels=10
GROUP=flag G100
SUBGROUP=flag
SPACE=0 TYPE=PERCENT freq gaxis=axis3 maxis=axis1 ;
run;
输出
类似的图表显示了值与组值不同的子组变量的影响。
data test_scores;
do _n_ = 1 to 200;
subgroup = ceil(5 * ranuni(123)); * random 1 to 5;
score = ranuni(200);
flag = _n_ > 50;
output;
end;
run;
axis1 label=("score");
axis2 ;
axis3 label=none value=none;
PROC GCHART data=test_scores;
VBAR score
/ levels=10
GROUP=flag G100
SUBGROUP=subgroup /* has integer values in [1,5] */
SPACE=0 TYPE=PERCENT freq gaxis=axis3 maxis=axis1;
run;