sgplotでは散布図のシンボルをcircleなりsquareなりの指定で色々な形を出力することができます。具体的にはscatterステートメントのmarkerattrsです。例えばmarkerattrs = (symbol = circle)とすると散布図のシンボルが白丸になります。ここでmarkerattrs = (symbol = circle color = black)としてやると黒い白抜きの丸ですね。その他にどんな指定ができるのかは以下のsasのhelpに記載があります。
https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/grstatproc/p0i3rles1y5mvsn1hrq3i2271rmi.htm
markercharオプションを使うと任意の文字列をシンボルに出来るのですが、なんとこのオプションは「specifies a variable whose values replace the marker symbols in the plot. 」とあるので、MARKERCHAR=変数名と指定しないといけません。要はシンボルの文字列を格納した変数を別途sgplotに読み込ませるデータに作らないといけません。以下のフォーラムでもデータセットにシンボル用の変数を作成する旨が解決策として示されています。ちょうど「-」をMEANSYMBOLという変数に格納しているようです。
https://communities.sas.com/t5/Graphics-Programming/PROC-SGPLOT-SCATTER-PLOT-and-quot-quot-as-SYMBOL/td-p/133064
もちろんこれでも問題ないのですが、私としてはシンボル用の文字列をデータセットに持たせるのはあまり好みではありません。そこで別の手段としてsymbolcharステートメントを使います。scatter ... / markerattrs = (symbol = sym1)とします。sym1の文字列はなんでもいいです。次にsymbolcharステートメントを使ってsymbolchar name = sym1 char = "002D"x ; とします。symbolcharのnameにはmarkerattrsで指定したものと同じ文字列を指定してください。今回で言うとsym1です。char = "002D"xの部分でユニコードでの「-」を指定しています。symbolcharのcharではユニコードが通るのがミソですね。今回は-ですが違うユニコードを指定すれば当然違う文字列をシンボルに出来ます。あまり色んな文字をシンボルにしたくはないのですがたまにはやむを得ないということで…
--指定の例--
/ markerattrs = (symbol = sym1)
;
symbolchar name = sym1 char = "002D"x ;
0 件のコメント:
コメントを投稿