gmtcolors — GMT 6.6.0 documentation
連番のグラフデータを図示したい
No.1からNo.50までの連番の解析データがあった際にNo.1~No.50を1枚のグラフに図示したい時がありませんか?
hogehoge_no1.datからhogehoge_no50.datまでの連番ファイルがあって、これらを1枚の絵に図示したい、、とかです。
#!/bin/bash
for i in `seq 1 50`
do
# 1~100までのランダムな値を4つ生成
a=$(( $RANDOM % 100 + 1 ))
b=$(( $RANDOM % 100 + 1 ))
c=$(( $RANDOM % 100 + 1 ))
d=$(( $RANDOM % 100 + 1 ))
echo -e "$a $b \n$c $d" > hoge_$i.txt
done
として、このhoge_1.txt~hoge_50.txtまでの連番のグラフデータを1枚の絵に図示してみましょう。
まず1つのデータをグラフに図示する(復習)
これは簡単です。hoge_1.txtを例にすれば、
for i in `seq 1 50`
do
# 1~100までのランダムな値を4つ生成
a=$(( $RANDOM % 100 + 1 ))
b=$(( $RANDOM % 100 + 1 ))
c=$(( $RANDOM % 100 + 1 ))
d=$(( $RANDOM % 100 + 1 ))
echo -e "$a $b \n$c $d" > hoge_$i.txt
done
# GMT
gmt begin hogehoge png
gmt basemap -JX12 -R0/100/0/100 -Bafg -BWSne
gmt plot "hoge_1.txt" -W0.25,red
gmt end
とすれば、
※ランダムな数値なので実行するたびに毎回変わります
と出力できます。ここまでは簡単。
ランダム色を作る
The color can be specified in five different ways:
- Gray. Specify a gray shade in the range 0–255 (linearly going from black [0] to white [255]).
- RGB. Specify r/g/b, each ranging from 0–255. Here 0/0/0 is black, 255/255/255 is white, 255/0/0 is red, etc. Alternatively, you can give RGB in hexadecimal using the #rrggbb format.
- HSV. Specify hue-saturation-value, with the former in the 0–360 degree range while the latter two take on the range 0–1 17.
- CMYK. Specify cyan/magenta/yellow/black, each ranging from 0–100%.
- Name. Specify one of 663 valid color names. See gmtcolors for a list of all valid names. A very small yet versatile subset consists of the 29 choices white, black, and [light|dark]{red, orange, yellow, green, cyan, blue, magenta, gray|grey, brown}. The color names are case-insensitive, so mixed upper and lower case can be used (like DarkGreen).
要は、ファイルごとに色を分ければ見分けがつきますね。
plotはRGBでも色を設定できることに着目しましょう。すなわち、
#!/bin/bash
# 16進法のRGBをランダムに100色作成して配列に格納する
for i in `seq 1 100`
do
color[$i]=$(printf "%02x%02x%02x" $(($RANDOM%256)) $(($RANDOM%256)) $(($RANDOM%256)))
done
とすれば、ランダムに色を設定することができます。
よって、
#!/bin/bash
for i in `seq 1 50`
do
# 1~100までのランダムな値を4つ生成
a=$(( $RANDOM % 100 + 1 ))
b=$(( $RANDOM % 100 + 1 ))
c=$(( $RANDOM % 100 + 1 ))
d=$(( $RANDOM % 100 + 1 ))
echo -e "$a $b \n$c $d" > hoge_$i.txt
done
# 16進法のRGBをランダムに100色作成して配列に格納する
for i in `seq 1 100`
do
color[$i]=$(printf "%02x%02x%02x" $(($RANDOM%256)) $(($RANDOM%256)) $(($RANDOM%256)))
done
# GMT
gmt begin hogehoge png
gmt basemap -JX12 -R0/100/0/100 -Bafg -BWSne
for i in `seq 1 50`
do
gmt plot "hoge_$i.txt" -W0.5,"#"${color[${i}]}
done
gmt end
とすれば、
とできます。微妙!
凡例
gmt legendの使い方
GMTのlegendモジュールについて説明しています。
これだと見る側がしんどいので、凡例を付けてあげましょう。
線はおまかせモードで凡例がつけれられるので、
#!/bin/bash
for i in `seq 1 50`
do
# 1~100までのランダムな値を4つ生成
a=$(( $RANDOM % 100 + 1 ))
b=$(( $RANDOM % 100 + 1 ))
c=$(( $RANDOM % 100 + 1 ))
d=$(( $RANDOM % 100 + 1 ))
echo -e "$a $b \n$c $d" > hoge_$i.txt
done
# 16進法のRGBをランダムに100色作成して配列に格納する
for i in `seq 1 100`
do
color[$i]=$(printf "%02x%02x%02x" $(($RANDOM%256)) $(($RANDOM%256)) $(($RANDOM%256)))
done
gmt begin hogehoge png
gmt basemap -JX12 -R0/100/0/100 -Bafg -BWSne
for i in `seq 1 50`
do
gmt plot "hoge_$i.txt" -W0.5,"#"${color[${i}]} -l"No.$i"
done
gmt legend -DJTR+jTL+o0.5/0 -F+pblack+gwhite
gmt end
とすると、
となります。(微妙!)
でも、1個のグラフに図示するのは、せいぜい10個くらいでしょうから、
だいぶ見やすくなると思います。
今回はここまで。
コメント