京都工芸繊維大学工芸科学部 生命物質科学域高分子機能工学部門 高分子物性工学研究室

  • JP
  • EN
  • menu

    グラフの作成(8): TickLabels と TickPosition(上級)

    グラフの作成(8): TickLabels と TickPosition(上級)

    通常グラフを描く場合、縦軸をLeft axisに、横軸をbottom axis に選択してプロットする。一つのグラフに2つの変数を縦軸としてプロットする場合は、図に示すようにwave 選択画面の下でleft ではなく「right axis」を選べば、右側に新たな変数を追加してプロット可能だ。

    例えば、拡散係数Dを時間の関数としてプロットし、さらに動的相関長ξをプロットしたければ後者を右軸に選んでプロットすればよいのだ。これは初級レベルの操作だが、Dとξが1対1対応していて、グラフの中に2本のデータ群ではなく、1本のデータ群で示したい場合、どうしたらいいだろうか。まずは以下の図を見て頂きたい。

    D=kT/6πηξ の関係を用いてDからξの換算を行ってみると、温度60℃、粘度 0.617 の媒体中のξは、D が 9.88e-08 (cm^2/s)で、40 (nm)、D が 1.32e-06(cm^2/s)で、3 (nm) に対応する。グラフを見るとこのような対応関係がある事がわかる。普通にξを右軸にプロットしてしまうと、やってみればすぐにわかるが、 wave が二種類表示されるために見苦しいグラフとなる上に、右軸と左軸のメモリの位置が全然対応しないことに気づくだろう。前者は軸のプロット範囲を工夫すればよいだけの問題であるが、後者は簡単にはいかなさそうだ。ここで、右軸に付ける目盛りをちゃんと左軸から計算して、かつ「キリの良い」ところに打つためには、それ専用のwave を作成する必要がある。

    まずは、TickPositions と TickLabels という名の2つの wave を作成する。今回は以下のような7行のデータを作成した。

    TickPositions
    TickLabels
    9.88E-08
    40
    1.98E-07
    20
    3.95E-07
    10
    4.94E-07
    8
    6.59E-07
    6
    9.88E-07
    4
    1.32E-06
    3

    さらにコマンドラインから、

    Make/O/D/N=2 Dc_2p_Right; Dc_2p_Right={0, 1.5e-06}

    Make/O/D/N=2 tgel_2p_Bottom; tgel_2p_Bottom={1, 1}

    とタイプして、Dc_2p_Right および tgel_2p_Bottom という二種類のデータを作成してみる。無事に作成できたら、Dc_2p_Right を「右軸」に、 tgel_2p_Bottomをボトム軸に対してプロットしてみよう(GraphメニューのAppendToGraph)この段階ではまだ未完成だが、横軸の値が1のところに基準線みたいなものが描けただろう。ここで右軸の wave は、時間軸に印を付けるために筆者が独自に入れた線であるので(zero lineのようなもの)、left と bottom に対応したデータセットを入力して、グラフ上にマーカー表示するなどして目立たないようにしてもかまわない。

    さて、いよいよ仕上げだ。

    グラフ上をダブルクリックして、Auto/Manu Ticks のタブを呼び出そう。以前、Manual ticksについて解説したが、今回は「User Ticks from Waves」を選ぶ。TickPositions と TickLabels の二つの wave が正しく作成されていれば、目的のグラフの完成にたどり着けるはずだ。