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に指定するとよいのですね。

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

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
Discussion stats
  • 6 replies
  • 1589 views
  • 3 likes
  • 2 in conversation