さて、まず問題です。華氏 F (Fahrenheit)を、摂氏 C (Celsius)に換算する次の式の □ にはどんな数字が入るかご存知ですか?
C = □(F - 32) (1)
▼ [おさらい] 温度換算
摂氏 C は、熱力学的温度(絶対温度) T から 273.15 K を引き算した温度ですね。1°C の幅は1K。一方華氏は、かつて寒剤によって実現できた一番冷たい温度を 0 °F、人の体温を 100 °F とする温度ですね。その間を100等分したので、1 °F は 1K ではありません。さてさて、冒頭の問題の答えは、
C = 5/9 (F - 32) (2)
でした。華氏で 30 度くらいが摂氏の 0 度というわけですね。
▼ 単位換算と軸の変換
温度換算は身の回りの単位換算の例の一つです。温度だけでなく、圧力や体積、濃度など、換算する単位は数多くあると思います。換算の数学(算数?)的な処理はとても簡単ですが、グラフを描画してしまってから、しまったぁ、単位を間違ったなぁ、と気付いて単位換算するのはなかなか面倒なものです。
IGOR Pro には、そんなあなたにお勧めの素敵なパッケージが用意されています。その名は、Transform Axis。グラフを最前面に表示して、グラフメニュー>Packages>Transform Axes を選択してください。
パネルが表示されます(Fig.1)。このパネルには、いくつか機能がありますが、ひとまず、
- Axis のリストで変換する軸を選択し
- Function のリストで変換方法を選択し、
- Do It ボタンをクリック
とすると、軸が換算できます。2 の Function には、あらかじめ次の11種類の変換方法がリストされています。
- Reciprocal(逆数)
- Modify Reciprocal(修正逆数)
- DegreesCtoF(摂氏 → 華氏)
- DegreesFtoC(華氏 → 摂氏)
- DegreesCtoK(摂氏 → 熱力学温度)
- DegreesKtoC(熱力学温度 → 摂氏)
- DegreesFtoK(華氏 → 熱力学温度)
- DegreesKtoF(熱力学温度 → 華氏)
- Probability_Persent(確率パーセント)
- Probability(確率)
- SquareRoot(平方和)
温度の換算は、あらかじめ用意された Function を利用すれば簡単です。
おまけに、Make it a Mirror Axis というチェックボックスまで用意されています。これは文字通り、変換した結果を反対軸として表示するという機能です。この機能を使うと、反対軸に違う単位の軸を追加することができます。
▼ アレニウスプロット(ArrheniusPlot) 再び
以前の記事で、アレニウスプロットの作成方法を紹介しましたが、もとの温度データの単位 [°C] で反対軸を追加するために、ちょっとトリッキーな手順が必要でした。
Transform Axis を使えば、もっと簡単に、反対軸に単位を換算した軸を追加できます。
摂氏の温度データ Temp から、アレニウスプロットの温度データ ArrTemp に変換するには
ArrTemp = 1000/(Temp+273.15) (3)
と、換算すればOKですね。逆に、
Temp = 1000/ArrTemp-273.15 (4)
と換算すれば元に戻ります。これら換算は Transform Axis の Function のリストにはありませんが、実は、とても簡単に追加できるんです。プロシージャウィンドウ(ウィンドウメニュー>プロシージャウィンドウ)に次のコード(ユーザ定義関数)を貼り付けてください。
Function TransAx_TempToArrTemp(w, x)
Wave/Z w
Variable x
return 1000/(x+273.15)
End
「TransAx_」から始まる関数は、Transform Axis の Function のリストに自動的に追加されるようになっています。ただし、引数に、ウェーブをひとつ(ここでは w)と、変数をひとつ(ここでは x)を指定することが条件。変数 x は換算される元のデータになります。ウェーブは換算するパラメータを渡すことができるような仕組みですが、今回は使わなくて大丈夫ですね。
同様に、ArrTemp から元の Temp に戻すには
Function TransAx_ArrTempToTemp(w, x)
Wave/Z w
Variable x
return 1000/x-273.15
End
という関数を用意しておけばOKです。
先の手順で反対軸を用意することを思えば、圧倒的に簡単です。ただし、同じ軸を2回変換することはできない仕様なので、X 軸に ArrTemp、反対軸に Temp を表示したい場合には、ArrTemp まではあらかじめ換算しておいて、グラフを作成したうえで(Fig.2)、X 軸を ArrTempToTemp で換算して反対軸に追加するのがよさそうです(Fig.3)。
▼ さらに
目盛りの設定も自由自在なんです(Fig.5)。目盛りを表示したい位置、そのラベルを編集するエディタも付いています。グラフを最前面に表示して、グラフメニュー>Transform Axis>Edit Ticks on Transform Axis で利用できます。
▼ まとめ
Transform Axis というパッケージを紹介しました。最初から11種類の換算方法(Function)が用意されていますが、TransAx_ で始まる関数を定義すれば、自由自在に軸の変換が可能です。IGOR Pro の軸を修正ダイアログでは常用対数や底を2とする対数への変換が可能ですが、Transform Axes パッケージを利用すればもっと柔軟な変換が可能になりますので、お試しください。
井上@技術開発部でした。


