3021 re(1):塗りのあるプロットの枠だけ白くしたい。 |
例えば
plot 'file' with p ps 20 pt 7 lc "white", '' with p ps 19 pt 7 lc "red"
のように、少し大きめの白で塗って、その上に少し小さめの赤、とかやると
うまくいきません。これは、最初の白が全部かかれた後で、次の赤のデータ
が書かれてしまうからです。つまり、白丸、赤丸、白丸、赤丸と書かないと
いけないのですが、これがちょっと面倒です。
ということでとりあえずの方法を 3 つ紹介します。
1) multiplot + every + do for
set multiplot
do for [i=1:5] {
plot 'file' every ::(i-1)::(i-1) with p ps 20 pt 7 lc "whlite",\
'' every ::(i-1)::(i-1) with p ps 19 pt 7 lc "red"
}
unset multiplot
every ::(i-1)::(i-1) で i 行目のデータだけとりだし、それに対して白
丸、赤丸を書く、と言う作業を do for で繰り返す、という方法で、それ
を multiplot で全部重ねます。
なお、5 というデータ行数の指定は、最近の CVS 版では最後の行まで、
という指定 (*) ができるようになっています。
2) with circles と境界線
with points でなくて with circle を使う、という手もあります。with
circle なら点毎に円の大きさも変更できますし、境界線も書けるので、
それを使えば for も multiplot も不要です。
set style fill solid 1.0 border lc "white"
plot 'file' using 1:2:(0.1):(0):(360) with circles lc "red"
0.1 は半径で、適当なサイズに指定してください。ただし、これだと境界
の太さを変更できません。
3) with circles と plot for の入れ子
plot for では for の入れ子が使えます。これで白丸と赤丸を書きます。
色は、lc rgb variable を使用して、色を切り替えられるようにします。
set style fill solid 1.0 noborder
rad(j) = 0.1 + (2-j)*0.01
lc(j) = (j==1)? 65536*255+256*255+255 : 65536*255
plot for [i=1:5] for [j=1:2] 'file' \
using 1:2:(rad(j)):(0):(360):(lc(j)) \
every ::(i-1)::(i-1) with circles lc rgb var
rad(j) は j に応じて半径を少し大きくしたり小さくしたりするもの、
lc(j) は rgb variable に渡す 24bit 色値で、j=1 のときは白、j=2 で
は赤にしています。
ほかにもあるかもしれませんが、とりあえずはこんなところで。
〔ツリー構成〕
【3020】 塗りのあるプロットの枠だけ白くしたい。 2015/9/3(木)17:43 手歩進 (492) |
┣【3021】 re(1):塗りのあるプロットの枠だけ白くしたい。 2015/9/4(金)11:53 竹の (1880) |
┣【3023】 re(2):塗りのあるプロットの枠だけ白くしたい。 2015/9/5(土)22:53 手歩進 (192) |
┣【3024】 re(2):塗りのあるプロットの枠だけ白くしたい。 2015/9/8(火)12:44 竹の (521) |
※ 『クリックポイント』とは一覧上から読み始めた地点を指し、ツリー上の記事を巡回しても、その位置に戻ることができます.