この記事は、初心者向けのまずこれシリーズ第12回の補足記事です。チャートやグラフをもっと扱いたい、という方向けにもう少し内容を補足しています。
チャートやグラフを使用する上で知っていると役に立つ機能やプログラムの書き方をいくつか集めてみました。
- プログラム的に特定のプロットの外観(色など)を変える
- 閾値を超えたら色を変える
- Y軸スケールを増やす
- チャートの表示点数を変える
- 縦方向にプロットする
- チャートやグラフの結果をファイル出力する
- 最大値、最小値だけ色を変えて表示
それぞれ紹介していきます。
プログラム的に特定のプロットの外観(色など)を変える
チャートやグラフの操作で色や外観を変えるにはプロパティノードを使用します。ただし、プロットに対する操作は少しクセがあり、「どのプロットかを選択した後にそのプロットの何を変更したいのか」を決めます。
具体的には、まずアクティブプロットというプロパティを使用して、「これからプロパティを変更したいのは何番目のプロットなのか」を指定した後に続けざまにそのプロットのプロパティを変更するという書き方になります。
たとえば、以下の図ではプロットが二つある場合にプロット0を赤に、プロット1を緑色のプロットに変えています。
ただし、グラフについては、「プロットが複数ある」ことが事前にわかっていない場合には上記の方法がうまく使えません(2回目以降使える)。そんなときには、ループの中でグラフにプロットをしてから色を変えるような工夫が必要です。
もちろん色以外にも変えることができます。例えばプロットの名前や線の太さなどを変えるのも全く同様な考え方でできます。
閾値を超えたら色を変える
例えば閾値を超えた点のみ赤くして、それ以外の点を黒で表したいとします。しかし、チャートやグラフは一つのプロットに対して点の色を混在させることができません。
そこで、二つのプロットで、あたかも一つのプロットを表わしているのように操作します。そのためにはNaNを使用しています。数値データタイプでNaNはNot a Numberの略であり、「数値ではない」という状態を表します。文字通り数値ではないのであればチャートやグラフにプロットがされないので、これを利用します。
例えばチャートなら以下のようなプログラムが考えられます。
グラフでは以下のようです。
ただ上の図の組み方だと配列連結追加がループの中で使用されていてメモリ効率的には良しとされていません。配列連結追加を使用しない形の例としては以下が考えられます。
XYグラフになるとなお複雑になります。以下は、配列連結追加を使わないで、チャートのように1点ずつデータが増えるような場合の書き方の例です。
また、サンプルファインダの中にもしきい値検出のサンプルがあるのでこちらも参考になると思います。
Y軸スケールを増やす
スケールを増やすこと自体はチャートあるいはグラフを右クリックして行うことができます。
さらに、いわゆる両縦軸のチャートやグラフにするということであれば、複製したスケールの片方を右に「サイドスワップ」させます。
あとは各プロットがどのスケールと対応させるかを指定します。この際にもアクティブプロットが活躍します。
チャートの表示点数を変える
実はチャートはあらかじめ一度の画面で表示できる点数が決まっています。その点数を超えるとチャートの表示は右にずれていくような動作をします。
この表示点数はチャートを右クリックすることで表示されるチャート履歴の長さという部分で変更することができます。ただ、プログラム的にこの変更ができる設定はないため、プログラム実行途中で変えることができません。
縦方向にプロットする
チャートやグラフは常に横方向にプロットを展開します。これは、チャートとグラフがX軸をデータの順番としているためです。
と、いうことは・・・そう、XYグラフを使えば縦方向にプロットすることが可能です。要はXの値を固定して、Yの値を変えるとった使い方ですね。
プロットの色分けをしたプログラムに少し手を加えただけの例ですがこのようにプログラムをかけば縦方向にプロットが増えていきます。
ただし、Y軸の値は通常下から上に数字が大きくなりますが、縦方向にプロットする関係上数字は上から下にかけて大きくなる方がいいと思います。そんなときにはプログラム実行前にY軸の最大値をプロットさせる点の最小値(例えば0)にしておきます。
チャートやグラフの結果をファイル出力する
得られた結果を数値として保存するのももちろんいいですが、中にはチャートやグラフなどのプロットされた状態の図を画像ファイルとして保存したいというときだってあるかもしれません。
そんな場合には、インボークノードを使用します。いくつかの画像タイプで保存することができるので、目的にあった画像タイプを選択して保存します。
以下の図はグラフに対しての例ですが、チャートやXYグラフも全く同じ名前のインボークノードを使用します。
最大値、最小値だけ色を変えて表示
グラフの使い方になりますが、ある瞬間に表示させるグラフプロットについて、その中の最大値と最小値のみ色を変えて表示させるようなこともできます。
これも、実際には二つのプロットをさせて、片方はすべてのデータの配列、もう片方はそれらのデータ配列の中で最大値と最小値を抽出してその他はNaNとするような方法です。
こちらも以下に例を示します。
グラフやチャートは本当に頻繁に使う場面がある表示器になります。ここではそれらの使い方として工夫してプロットできるようになるためのサンプルをいくつか紹介しました。
単にプロットを表示させるだけでもいいのですが、いろいろなカスタマイズをしてよりわかりやすいチャートやグラフの表示ができるようになると面白いと思います。
ここまで読んでいただきありがとうございました。
コメント