〔前の画面〕
〔クリックポイント〕 〔最新の一覧〕
〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了〕
2832 re(3):splot で複数ファイルのデータをグリッドデータとして扱う方法 |
2014/8/20(水)21:10 - nkom - cable-28.246.173-171.electronicbox.net - 1278 hit(s) - ResMail
ざっとソースを見てみました。
plot3d.c の1843行目辺りにある do ループの外側で
For のイテレーションをやっているのを、新たな内部変数を作って、
set multifile か splot の中で with multifile などとやると、
do ループの内側でイテレーションの処理をやり、
それぞれのファイルが終わると空行が一行あったのと
同じ処理を加える、とかするのが一番良さそうな気がします。
これで、複数の2Dデータのファイルから、3Dグラフを
作るのが凄く簡単になると思うのですが。
別の方法としては、一番安直なのは df_readline() が
呼び出しているdf_ascii() で、ファイルの終わりで
空行処理を追加し、ファイルリストの次のファイルを
オープンして続けるなり、ファイル名を提供する
関数を呼ぶ、と言うやり方。
これが、変更箇所は一番少なくて済みそうだけど、
やり方としては、一番良くないかも。
あるいは、連続して複数のファイルを読んで、
値を返す関数を作って、それを"+"とかと組み合わせる、
というのも出来るかもしれないですが、そうすると、
空行処理とかが少しやりにくそう。
他には、df_readline() を呼ぶ代わりに
一行一行データを返すユーザー関数を
使える様にして、同時に任意のファイルを
開いて読み込む関数とかを備え、
パイプを使わず同じ様なことが出来るようにする、
という方法もあるのかもしれません。
(つまり、ユーザー関数で、ファイルを読んだり
テキスト処理とかもして、ブロックデータを生成し、
それをファイルの代わりに読み込める、という形)
いずれにせよ、merge とかの様に
縦の列を組み合わせるのではなく、
複数のファイルを、空行で区切られた
単一のファイルと見なすような処理を
すればよいだけなので、そんなに難しくは
無さそうですが、出来たらどなたか
既に各種の構造体の意味とかを良くご存知の方が
やってくれないかなあ、と、少しだけ期待しています。
ただ、cat とかで、ファイルを繋げれば済む話ですし、
Gnuplotの中で何でもやろうと考える人も
余りいらっしゃらないでしょうから、
どうしてもこういう仕組みが欲しいなら、
やはり自分でもっと内部の処理を勉強して、
パッチを作らないと実現しないのかもしれませんが。
〔ツリー構成〕
┣【2832】 re(3):splot で複数ファイルのデータをグリッドデータとして扱う方法 2014/8/20(水)21:10 nkom (1866) |
〔前の画面〕
〔クリックポイント〕 〔最新の一覧〕
〔全て読んだことにする〕〔全て読んだことにして終了〕 〔終了〕
※ 『クリックポイント』とは一覧上から読み始めた地点を指し、ツリー上の記事を巡回しても、その位置に戻ることができます.