Gnuplot でプロットの色をグラデーションで変えたい

以下の2つについて解説します。

  1. 1つのデータをプロットする際に徐々に色が変化するグラフを描画
  2. 複数のグラフを描画する際に、それぞれの色を疑似グラデーション変化させる

また、動作は Gnuplot 5.0 patch level 3 で確認しています。

1. 1つのデータをプロットする際に徐々に色が変化するグラフを描画

1本の線をグラデーション

上図のような画像を描画する方法です。

plot "data.dat" u 2:3:1 w l lc palette

plotするときに用いているusingコマンドに与える三つめの引数(?) がグラデーションに利用するインデックスになるようです。

linecolor (lc) コマンド後にある palette はいくつかの色が列挙されている配列のようなもので、 前述のインデックスによりこの palette の中の特定の色を選んでいます。 実際にプロットされる際には選んだ色の間を適当に補完した形でスムージングして綺麗なグラデーションで 表示してくれているようです。

上の例では単に palette と指定していますが、パレットの中身は set palette define コマンドによって 自分で指定することが可能です。

例えば、赤から青に徐々に変化するパレットを設定するには以下の通り。

set palette define (0 "red", 1 "blue")

上記のコマンドで利用する色の名前は show pallete コマンドにより確認可能です。

show palette colorname

因みに右に表示されるボックスが邪魔、という場合には以下のコマンドで消せます。

unset colorbox

参考ページ

2. 複数のグラフを描画する際に、それぞれの色を疑似グラデーション変化させる

複数の線をグラデーション

いくつかのグラフをプロットする際に色を変化させる方法です。 こちらについては、素直にグラデーションにする方法が見つからなかったので、 手動で色を設定する方式になっています。

色を指定するのに style を利用します。この style に指定する色は 自分で手で打っていき、グラデーションを作り出します。

set style line 2 lc "#0000ff"
set style line 3 lc "#0022ff"
set style line 4 lc "#0044ff"
set style line 5 lc "#0066ff"
set style line 6 lc "#0088ff"
set style line 7 lc "#00bbff"
set style line 8 lc "#2299ff"

これを設定した上で、 plot する際に linestyle (ls) を指定します。

plot for [n=2:8] "test.dat" u 1:n w l ls n

これで n を 2から8まで変化させつつグラフをプロットしているのですが、 この時に ls n を指定することで linestylen の通りに変化させつつプロットしています。

このやり方だと余り多くのグラフの描画には向いていないと思います。 大量のグラフをプロットする際にはデータ解析ソフトなどを利用するのが良いのかもしれません。

コメント

このブログの人気の投稿

gnuplot: グラフの色を変更する

gnuplotで縦線を引きたい

[Linux] rsyncで進捗を確認する