gnuplotで軸を数値ではなく任意のラベルで表示する方法(usingでticlabelsを用いる)
gnuplotで以下のグラフのようにx軸を数値ではなく、任意のラベルに割り当てて表示する方法を紹介していきます。
このグラフはデータファイルとしては以下のようになっています。
方法としてはusingの書式でticlabesを設定する方法と、setコマンドでxtics listを設定する方法があります(その他にもあるかも)。
上の例のようにデータファイルに書かれているラベルを用いたい場合はusingで設定する方を用いるのが便利でしょう。今回はこちらのticlabelsを用いる方法を紹介していきます。
これは一見するとそれほど難しくはないのですが、usingの書式からすると結構違和感のある書き方に見えるかと思います。
usingの部分だけ見ると
「using 2:xticlabels(1)」
となってますが、この書き方だとデータファイルの2列目がx軸、1列目のラベルがy軸のように見えるかと思います。しかし実際にはこれは2列目はy軸、1列目のラベルがx軸となる設定の書き方になっています。
なぜこのような書き方になるのかやや分かり難いのですが、これはusingで設定すると言っても
そして再び
「using 2:xticlabels(1)」
という書き方を見ると、これはプロットの指定部分は「2」、ticlabelsの指定部分は「xticlabels(1)」という書き方になっています。
以前のブログ
で説明したように、
「using 2」
と指定した場合は
「using 0:2」
と解釈されます。ここで出てくる「0」はデータファイルの列ではなく、「0, 1, 2, ...」となる擬似的に生成される列となります。
なので
「using 2:xticlabels(1)」
というのは
「using 0:2:xticlabels(1)」
と見なすことが出来るでしょう。データファイルのxの値が「0, 1, 2, ...」でそれがデータファイル1列目に書かれているラベルに置き換えられると見ると分かりやすいかと思います(あくまでも自分がそう解釈しているだけで、gnuplotの内部の仕組みがそうなのかまでは踏み込んでません)。
なので、ticlabelsでラベルを割り振る場合はusingで指定するといっても書式についてはそれ用の考え方を意識しておく必要があります。
ここまでx軸をラベルにする方法を述べてきましたが、y軸の値をラベルにしたい場合はyticlabelsを用いて指定します。z軸の場合はzticlabelsになります。
その他、gnuplot関連のブログ記事
Amazon データ解析関連書籍など
このグラフはデータファイルとしては以下のようになっています。
サンプル-壱 3
サンプル-弐 4
サンプル-参 1
サンプル-四 2
方法としてはusingの書式でticlabesを設定する方法と、setコマンドでxtics listを設定する方法があります(その他にもあるかも)。
上の例のようにデータファイルに書かれているラベルを用いたい場合はusingで設定する方を用いるのが便利でしょう。今回はこちらのticlabelsを用いる方法を紹介していきます。
ticlabelsについて
ticlabelsは設定の総称で、実際に設定するのは以下に示すような各軸の設定項目になります。- x軸 : xticlabels, x2ticlabels
- y軸 : yticlabels, y2ticlabels
- z軸 : zticlabels
usingで指定するときの書式
まずもっとも短いであろう書式を書いておきます。gnuplot> plot 'test01.dat' using 2:xticlabels(1) with boxes
これは一見するとそれほど難しくはないのですが、usingの書式からすると結構違和感のある書き方に見えるかと思います。
usingの部分だけ見ると
「using 2:xticlabels(1)」
となってますが、この書き方だとデータファイルの2列目がx軸、1列目のラベルがy軸のように見えるかと思います。しかし実際にはこれは2列目はy軸、1列目のラベルがx軸となる設定の書き方になっています。
なぜこのような書き方になるのかやや分かり難いのですが、これはusingで設定すると言っても
- プロットの指定部分とticlabelsの指定部分は分かれている
そして再び
「using 2:xticlabels(1)」
という書き方を見ると、これはプロットの指定部分は「2」、ticlabelsの指定部分は「xticlabels(1)」という書き方になっています。
以前のブログ
で説明したように、
「using 2」
と指定した場合は
「using 0:2」
と解釈されます。ここで出てくる「0」はデータファイルの列ではなく、「0, 1, 2, ...」となる擬似的に生成される列となります。
なので
「using 2:xticlabels(1)」
というのは
「using 0:2:xticlabels(1)」
と見なすことが出来るでしょう。データファイルのxの値が「0, 1, 2, ...」でそれがデータファイル1列目に書かれているラベルに置き換えられると見ると分かりやすいかと思います(あくまでも自分がそう解釈しているだけで、gnuplotの内部の仕組みがそうなのかまでは踏み込んでません)。
なので、ticlabelsでラベルを割り振る場合はusingで指定するといっても書式についてはそれ用の考え方を意識しておく必要があります。
ここまでx軸をラベルにする方法を述べてきましたが、y軸の値をラベルにしたい場合はyticlabelsを用いて指定します。z軸の場合はzticlabelsになります。
ticlabelsの短縮形
xticlabels(1)は短くxtic(1)と書くことも出来ます。y軸、z軸も同様の短縮形で書くことが出来ます。その他、gnuplot関連のブログ記事
Amazon データ解析関連書籍など
コメント
コメントを投稿