BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Taka_FUK_JPN
Fluorite | Level 6

お世話になっております.

 

SAS9.3を使用しています.

 

proc sgplot のdattrmapオプションを使って,

重ね合わせている棒グラフ(vectorを使用)と散布図(scatterを使用)にグループ別に,自由に色をつけたいと考えています.

 

ただ,vectorのみ,sactterのみであれば,上手くいくのですが,

重ね合わせようとすると上手くいきません.

解決方法などご教示いただけますと幸いです.

 

 

プログラムは下記のような感じです.


    data Attrs;
     length Value $20. MarkerColor $20. LineColor $20.;
     ID = "D1";
     Value = putn(40,"D1f.");LineColor="bibg";output;
     Value = putn(80,"D1f.");LineColor="steel";output;
    
     ID = "D4";
     Value = putn(300,"D4f.");MarkerColor="CX090000";output;
     Value = putn(400,"D4f.");MarkerColor="CX110000";output;

    run;

 

 

proc sgplot data = OUT_EX DATTRMAP = Attrs;

 

     vector x=days3_&j. y=order / noarrowheads yorigin = order
         lineattrs = (pattern=solid  thickness=10) name="course&j."
         group = dose3_&j. ATTRID = D1
     ;
 

     scatter x=days4_&j. y=order4 / markerattrs=(symbol=circlefilled)
         group = dose4_&j. ATTRID = D4
     ;

 

 

 

よろしくお願いします.

1 ACCEPTED SOLUTION

Accepted Solutions
yu_sas
SAS Employee

サンプルデータで書き換えてみましたが、構文には問題ないように思われます。わかりやすいように

マーカーの色は少し変えました。データセットAttrsが想定通りに作成されているか等、データ部分を

確認してみてはどうでしょうか。あと、可能であれば実行可能なサンプルデータや、期待の結果と

得られた結果の画像などがあると回答しやすいかもしれません。

 

    data Attrs;
     length Value $20. MarkerColor $20. LineColor $20.;
     ID = "D1";
     Value = "男子";LineColor="bibg";output;
     Value = "女子";LineColor="steel";output;
     ID = "D4";
     Value = "男子";MarkerColor="CX090000";output;
     Value = "女子";MarkerColor="CXf10000";output;
    run;

data class;
set sashelp.class;
sex2=sex;
run;

proc sgplot data =class(obs=8) DATTRMAP = Attrs;
     vector x=age y=height / noarrowheads yorigin=height
         lineattrs = (pattern=solid  thickness=10) 
         group =sex ATTRID = D1;
     scatter x=age y=height / markerattrs=(symbol=circlefilled)
         group =sex2 ATTRID = D4;
run;

View solution in original post

2 REPLIES 2
yu_sas
SAS Employee

サンプルデータで書き換えてみましたが、構文には問題ないように思われます。わかりやすいように

マーカーの色は少し変えました。データセットAttrsが想定通りに作成されているか等、データ部分を

確認してみてはどうでしょうか。あと、可能であれば実行可能なサンプルデータや、期待の結果と

得られた結果の画像などがあると回答しやすいかもしれません。

 

    data Attrs;
     length Value $20. MarkerColor $20. LineColor $20.;
     ID = "D1";
     Value = "男子";LineColor="bibg";output;
     Value = "女子";LineColor="steel";output;
     ID = "D4";
     Value = "男子";MarkerColor="CX090000";output;
     Value = "女子";MarkerColor="CXf10000";output;
    run;

data class;
set sashelp.class;
sex2=sex;
run;

proc sgplot data =class(obs=8) DATTRMAP = Attrs;
     vector x=age y=height / noarrowheads yorigin=height
         lineattrs = (pattern=solid  thickness=10) 
         group =sex ATTRID = D1;
     scatter x=age y=height / markerattrs=(symbol=circlefilled)
         group =sex2 ATTRID = D4;
run;
Taka_FUK_JPN
Fluorite | Level 6

ご丁寧にご教示いただきありがとうございました.

 

こちらの環境でも問題なさそうでした.

ただ,マクロ内でループさせながら組んでみたところ,

予期せぬエラーが出てしまったので,テクニカルサポートに問い合わせています.

また,新たな情報がわかり次第,共有させていただきます.