BookmarkSubscribeRSS Feed
chie_sas
Obsidian | Level 7

いつも大変お世話になっております。

 

SGPLOTにて散布図で描写したグラフに、エリア別に背景色を分けて表示させたいと考えています。

 

正方形のマスを9象限に分けて各象限別に背景色を変えるイメージです。

(2変数のどちらも大きい③のエリアの背景は赤い背景にする、など)

尚、各象限の境界値は固定の値です。

 

①|②|③

-----------------

④|⑤|⑥

-----------------

⑦|⑧|⑨

 

bandステートメントで行うと軸に対して上下限を指定できるのですが、もう一方の軸に対する上下限を

指定することができないようなので、

どのようにするとよいか助言をいただきたく思います。

 

よろしくお願いいたします。

6 REPLIES 6
amatsu
Obsidian | Level 7

こんにちは。

適当な例ですが、以下のような感じでいけるかと思います。

 

data myband;
input grp x1 low1 up1;
cards;
1 50 50 80
1 55 50 80
2 50 80 120
2 55 80 120
3 55 50 80
3 60 50 80
4 55 80 120
4 60 80 120
;

data class;
 merge sashelp.class myband;
run;

proc sgplot data=class;
   scatter x=height y=Weight;
   band x=x1 lower=low1 upper=up1 / group=grp transparency=0.6;
   styleattrs datacolors=(yellow green pink red);
run;

 

SASのバージョンによっては動かないとかあるかもしれません・・ 

 

chie_sas
Obsidian | Level 7

amatsu

 

ご回答ありがとうございます。

頂いた方法で無事にできました。

 

ちなみにグループの凡例を非表示にさせたいのですが、

どのようにするとよいでしょうか?

 

初歩的なご質問で恐縮ですが、よろしくお願いいたします。

amatsu
Obsidian | Level 7

 

 

NOAUTOLEGEND で凡例ぜんぶを削除できます。

 

proc sgplot data=xxxx noautolegend;

 

 

chie_sas
Obsidian | Level 7

amatsu

 

ありがとうございます。

そうやってできるのですね。

大変勉強になります。

 

bandの凡例は非表示でscatterの凡例は表示させたいときは、

NOAUTOLEGENDを指定しつつ、

keylegendでscatterのみ凡例を指定する、

という方法でうまくいきそうです。

(もっとスマートなやり方があればご教授いただけると幸いです。)

 

amatsu
Obsidian | Level 7

 

それでしたら NOAUTOLEGEND はダメですね。

 

proc sgplot data=class;
   scatter x=height y=Weight / group=sex name="sca";
   band x=x1 lower=low1 upper=up1 / group=grp transparency=0.6;
   styleattrs datacolors=(yellow green pink red);
   keylegend "sca";
run;

 

SCATTER の NAME=オプションと、KEYLEGEND を組み合わせればOKです。

 

chie_sas
Obsidian | Level 7

amatsu様

 

表示させたい凡例のみをKEYLEGENDに指定するとよいのですね。

ありがとうございました。