人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

動いている対象Aの時系列の位置情報(x,y,z)が10,000個ぐらいあるデータがあって、これをgnuplotでグラフ化すれば対象Aの軌跡が得られますが、
一つずつ順番にプロットしていくことで、元の動きを再現したアニメーションのように表示したいのですが、方法があれば教えてください。

●質問者: e-sheep
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:gnuplot アニメーション グラフ データ プロット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● うぃんど
●42ポイント ベストアンサー

【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」などとしたほうがスムーズかもしれません

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

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

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

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

◎質問者からの返答

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

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

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

tt = tt + 10

pause 0.01

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


2 ● windofiuly
●28ポイント

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

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ