2017-02-15 52 views
0

画像graphのようにグラフを生成するマクロがあります。バーの順番を 201601 201602 201603 201604 201605 Devの代わりにDev 201601 201602 201603 201604 201605に変更したいと思います。ここに私のコードはsasグラフの棒の順番を変更します

goptions reset=global gunit=pct border cback=white 
colors=(black red green blue) ftitle=swissb 
ftext=ZAPFB htitle=5 htext=1.7 
offshadow=(1.5,1.5); 
axis1 label=none; 
axis2 label=none value=none 
order=(0 to 110 by 10) 
major=none 
minor=none; 
legend1 cborder=black cblock=CXF0E68C label=none 
shape=bar(3,3) 
POSITION=(bottom center); 
pattern1 color=vpapb; 
pattern2 color=bigy; 
pattern3 color=paoy; 
pattern4 color=vligb; 
pattern5 color=lipk; 
pattern6 color=vpap; 
pattern7 color=pab; 
pattern8 color=lio; 

proc gchart data= Recent.char_&value; 
title ; 
vbar Period/sumvar=Percent 
subgroup=&value 
inside=subpct 
width=12 
space=8 
maxis=axis1 
raxis=axis2 
legend=legend1 
cframe=BWH 
coutline=black; 

私は問題を解決するために何をすればよいですか?

+0

私たちは自分で実行できるように、普遍的なコードをデータで提供してください。 –

答えて

0

これを行う最も簡単な方法は、バー値を実際の値として表示する形式を使用する順序値にすることです。ここで私は0 = Dev、1 = 201601、2 = 201602、などがあります。私は物事がうまく動作するので、そこに行くために画像フォーマットを使用しますが、このような単純な論理的なマッピングがない場合は、通常の値フォーマットを使用することができます。

data test_data; 
input period value; /* you may need to convert from '201601' to '1' if your data already has 201601 type values; use an informat (opposite of format). */ 
datalines; 
1 10 
2 20 
3 25 
4 25 
5 30 
0 20 
;;;; 
run; 

proc format; 
picture periodF 
0 = 'Dev' /* map 0 to Dev */ 
1-12 = 99 (prefix='2016'); /* for values 1-12, display in 2 digit zero padded format, prefix with 2016) */ 
quit; 

proc sgplot data=test_data; 
    format period periodf.; /*apply format here or in an earlier datastep */ 
    vbar period/response=value; 
run; 
+0

これはうまくいきましたが、この問題に遭遇しましたが、グラフには5つのバー( 'dev'と201601-201604、201605はもう存在しません)があります。これは私がログに得たものです: "警告:バーに指定された幅12とスペース8を使用する十分な空きがありません 警告:期間1のVBARチャートの1つ以上のバーが範囲にクリップされました指定された応答軸の " どうすれば修正できますか? – AquaStar

+0

私は幅とスペースを変更しようとしましたが、助けになりません。バーは小さくなり、フレームも5バーしか残っていませんでした。 – AquaStar

関連する問題