XMLファイルをMathematicaで読み込んでグラフを表示させてみよう！

最近の測定装置はデータをXMLファイルで出力したりしますね。そのデータを読み込んで解析してみましょう。いつもはExcelで処理するでしょうが、Mathematicaで読み込めば、近似したり、解析したりするのに豊富な関数を使うことができます。

使用XMLファイルの選択

Browseボタンを表示させてfに割り当てる。Dynamicをつかって変更を更新できる。
下のブラウズを押して test.xmlを呼び出してみよう。

{FileNameSetter[Dynamic[f]],Dynamic[f]}

XMLファイルの読み込みと分解

FileNameSetterでファイルのパスを割り当てた変数fをつかってXMLファイルを選択する
ImportしたままのものではMathematica上で計算することはできない。そこで各要素に分解していく。
Casesはパターンにマッチする要素をリストにして返すというものである(Infinityはレベル指定で最後まで)

Dropはいらないリストを削除する
Partitionはリストを分割する
今回はManupulateで各データを選んで自由に表示する

Interpreter[“Number”][“1e-4”]とやると10^-4を得ることができる。通常の標記をMathematicaに表示させるのは結構大変である。

Mapと純関数(# )&をつかうと、リストから次のリストに変換するのが楽になる。

data=Import[f,"XMLObject"];
list01=Cases[data,XMLElement["Data",{{"urn:schemas-microsoft-com:office:spreadsheet","Type"}->"Number"},_],Infinity]/.XMLElement[_,_,{val_}]->val;
list02=Drop[list01,109];
list03=Partition[list02,11];
Manipulate[ListPlot[{Map[({Interpreter["Number"][#[[x]]],Interpreter["Number"][#[[y]]]})& ,list03]}],{x,1,11,1},{y,1,11,1}]

TabViewをつかってわかりやすく表示しよう

さらにTabViewをつかえば、切り替えがらくになる。

TabView[{"V1-I1"->ListPlot[{Map[({Interpreter["Number"][#[[1]]],Interpreter["Number"][#[[5]]]})& ,list03]}],"V5-I1"->ListPlot[{Map[({Interpreter["Number"][#[[9]]],Interpreter["Number"][#[[5]]]})& ,list03]}]}]

まとめ

Mathematicaを使ってXMLファイルを読み込んでグラフ出力することができた！
今回の演習で作ったものを改良しながらもっと使いやすくするようにしていきたい
今後も測定データなどの解析などでMathematicaを使っていければいいと思います