動いている対象Aの時系列の位置情報(x,y,z)が10,000個ぐらいあるデータがあって、これをgnuplotでグラフ化すれば対象Aの軌跡が得られますが、

一つずつ順番にプロットしていくことで、元の動きを再現したアニメーションのように表示したいのですが、方法があれば教えてください。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/12/06 15:40:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149

ポイント42pt

【1】wgnuplotで作ってみました

必要なファイルは3つです

(1)データファイルの準備 a.dat

データファイルは一行おきにします

(テキストエディタなどで「改行コード」を「改行コード改行コード」に置換するなどして対応してください)

1 1.2 1.5

2 2.2 2.5

3 3.2 3.2

(2)起動用スクリプトの準備 a.gpl

描画範囲はデータに応じて設定しておいてください

タイトルや凡例などをsetする場合はこちらに記述してください

tmaxは最初は100程度の小さい数値にしてテストしてみてください

# 描画範囲
set xrange[-100:100]
set yrange[-100:100]
set zrange[-100:100]
# カウンタと最大値
tt = -1
tmax = 10000
# スクリプト呼び出し
load "b.gpl"

(3)ループ用スクリプトの準備 b.qpl

ポーズの値は全体を再生する秒数から計算すると良いでしょうけれど、

データ数が多いので計算どおりにいかないかもしれません

# カウントアップ
tt = tt + 1
# データ読み込み
plot "a.dat" every :::0::tt with point
# 一時停止
pause 0.001
# カウンタの値が上限に達していなければ再呼び出し
if( tt < tmax ) reread

(4)実行

load "a.gpl"

 

【2】改良すべき点

基点から再描画させるという手を使っていますので、

データ量が増えれば増えるほどループ毎に処理時間が増えるということになります

対策としてカウントアップを+1ではなく「tt = tt + 10」や「tt = tt + 100」などとしたほうがスムーズかもしれません

 

不明点がありましたら「コメント・トラックバックを表示する」にチェックを入れておいてください

回答欄よりも応答が速くなる場合があります

(回答欄を複数回使うのは質問者/回答者ともにデメリットがありますので、

 読みやすさなどの問題がなければ続きはコメント欄にしたほうが得です)

id:e-sheep

ありがとうございます!!

連続的にプロットできることを確認しました。

データセットが10,000ぐらいの解像度であれば

tt = tt + 10

pause 0.01

でかなりスムーズに動くようです。

2010/11/29 20:44:36

その他の回答1件)

id:windofjuly No.1

回答回数2625ベストアンサー獲得回数1149ここでベストアンサー

ポイント42pt

【1】wgnuplotで作ってみました

必要なファイルは3つです

(1)データファイルの準備 a.dat

データファイルは一行おきにします

(テキストエディタなどで「改行コード」を「改行コード改行コード」に置換するなどして対応してください)

1 1.2 1.5

2 2.2 2.5

3 3.2 3.2

(2)起動用スクリプトの準備 a.gpl

描画範囲はデータに応じて設定しておいてください

タイトルや凡例などをsetする場合はこちらに記述してください

tmaxは最初は100程度の小さい数値にしてテストしてみてください

# 描画範囲
set xrange[-100:100]
set yrange[-100:100]
set zrange[-100:100]
# カウンタと最大値
tt = -1
tmax = 10000
# スクリプト呼び出し
load "b.gpl"

(3)ループ用スクリプトの準備 b.qpl

ポーズの値は全体を再生する秒数から計算すると良いでしょうけれど、

データ数が多いので計算どおりにいかないかもしれません

# カウントアップ
tt = tt + 1
# データ読み込み
plot "a.dat" every :::0::tt with point
# 一時停止
pause 0.001
# カウンタの値が上限に達していなければ再呼び出し
if( tt < tmax ) reread

(4)実行

load "a.gpl"

 

【2】改良すべき点

基点から再描画させるという手を使っていますので、

データ量が増えれば増えるほどループ毎に処理時間が増えるということになります

対策としてカウントアップを+1ではなく「tt = tt + 10」や「tt = tt + 100」などとしたほうがスムーズかもしれません

 

不明点がありましたら「コメント・トラックバックを表示する」にチェックを入れておいてください

回答欄よりも応答が速くなる場合があります

(回答欄を複数回使うのは質問者/回答者ともにデメリットがありますので、

 読みやすさなどの問題がなければ続きはコメント欄にしたほうが得です)

id:e-sheep

ありがとうございます!!

連続的にプロットできることを確認しました。

データセットが10,000ぐらいの解像度であれば

tt = tt + 10

pause 0.01

でかなりスムーズに動くようです。

2010/11/29 20:44:36
id:windofiuly No.2

回答回数62ベストアンサー獲得回数2

ポイント28pt

繰り返し申し上げますが不明点がありましたら「コメント・トラックバックを表示する」にチェックを入れておいてください

回答欄よりも応答が速くなる場合があります

(回答欄を複数回使うのは質問者/回答者ともにデメリットがありますので、

 読みやすさなどの問題がなければ続きはコメント欄にしたほうが得です)

  • id:rouge_2008
    「繰り返し申し上げますが」と書いていますが、windofiulyとwindofjulyさんは別人ですのでご注意ください。
    以下にwindofjulyさん本人のコメントがあります。
    http://q.hatena.ne.jp/1290941276#c191679
    既に通報済みのようですが、はてなからの対応が遅いようです。
  • id:e-sheep
    うわ・・・すっかり騙された。悪質だなぁ。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません