hoge= Plot[f[x], {x, 0 , 1}];
Export["hogehoge.CSV", hoge[[1,1,1,1]]];
オシマイ。
- 適当な関数の2Dグラフを描きたい。とする。
- こう云う作業はEXCELで適当なx軸を作製して表計算でy値のリストを作って,グラフを描く。と云う方法でも実現できる。但し,「適当にx軸のサンプリングテーブルを作る」のがめんどいので,普通は等間隔な点列にする場合が多い。勿論,その方が便利な場合もある。
- しかし,振動性のグラフなどで,変化の大きい処ダケ緻密な点が欲しく,変化の緩やかな部分ではサンプリングポイントを少なくしたい。と云う欲求も自然である。
- MathematicaのPlot[]では,オプション「PlotPoints->number」で指定された数(デフォルトは25)のサンプリングポイントの計算をした後,その間の点を自動的に,カーブの曲がり具合を考慮しつつ「必要な濃度で」埋めてくれる。ので上の欲求を満たす。
- しかし,Mathematicaでそのようにして計算した関数のグラフを,適当なグラフ描きソフトに移してイロイロ加工したい,と云う欲求も当然存在する。この場合に,Plot[]の中のヒトが計算してくれた{xi,yi}のデータ列を取り出したいと云う欲求が発生するのは非常に自然である。
- hoge= Plot[f[x], {x, 0 , 1}];
によって,Plot[]の計算結果をhogeと云う変数に「代入」してある。
- このhogeは,Show[hoge]に依って,後の任意のMathematicaセッション中に(カーネルをクリアしない限り)再度表示させるコトができる。当然だが,Plot[]が再計算されているワケではなくて,hogeはPlot[]の「計算結果」を覚えているワケだ。
- しかし,このhogeは「グラフィックスオブジェクト」を云われる形式で,単に,
hoge <ENTER>
を評価しても,「Graphics」とか云うトボケタのが返されるダケ。でも,この「中身」が欲しいんである。
- ちなみにhogeの中身はリスト構造になっていて,当該グラフを描くのに必要な様々なオプションの指定やら座標軸やらなんやら全部と,折れ線グラフを描く為の座標データが収納されている。
- そのリストの中の座標軸部分の「深さ」が[[1,1,1,1]]。
- これをExprot[]で外へ書き出すには,filenameに拡張子「.CSV」を付けておけば良い。
- この方法は,NDSolve[]を用いて得られる常微分方程式の数値解(のMathematica内部表現である)「InterpolatingFunction」(をPlot[]で2Dグラフ化させたグラフ)から具体的な数値データを回収するような場合についても当然有効で利用可能であるので,非常に便利である。
■この方法は公表はされていない裏技っぽいんだけどどうなのかな?今後のバージョンアップその他に依って,グラフィックスオブジェクトの構造が変更されてしまったら使えないので注意。
■関係ないけど,この情報(の旧バージョン:Mathematicaの旧バージョンに対応)をむか〜しにメモしておいたハズの自分のウェッブページが見られない。のは,今ウチのサーバがコケている(と云うより死んでいる)せいなのだが。でもって,そのページの内容をGoogle君のキャッシュに教えて頂いちゃいました。全く面白いと云うか便利と云うか恐ろしいと云うか。な世界でございます。