<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、みんな、
誰もが不均一な時間間隔でバブルプロットを作成した経験がありますか?
バブルプロットでは、時間次元はかなり制限されています。これはリアルタイムのディメンションではなく、行ごとにアニメートします。そのため、不均一な時間差で実際のログデータイベントをアニメートしようとすると、そのアニメーションは時間に対して無礼になります。
添付ファイルにはイベントのログがあります - 各行はイベントです - ここで、個人(ID)はX、Y空間に位置します。各行にイベントの時間読み取りがあります。ファイル内のバブルプロットスクリプトは、それぞれ異なる期間に適切に対応することなく、行ごとにアニメートします。
次のスクリプトはデータテーブルを膨らませるので、各行はたった1分で、時間の経過とともにより正確なスペースの表現を生成します。
私はその件についてのコメントを補完します。
//最初に添付の表 "Bubble Plot2"を開く
//次にスクリプトを実行します。
dt = 現在のデータ表 () ;
//元のテーブルは通常、登録時刻順にソートされています。
// IDごとに並べ替えて、各IDのイベントごとの期間を計算できるようにします。
dt << ソート ( によって ( ID ) 、上昇 、テーブル交換 ( 1 ) ) ;
//各イベントの期間を計算するための列を追加します。
dt << 新しいコラム ( 「イベント期間」 、
数値 、
連続的 、
フォーマット ( "ベスト" 、 6 ) 、
式 (
もし (
ID == 遅れ ( ID 、 - 1 ) 、日付の違い ( : 時間 、遅れ ( : 時間 、 - 1 ) 、 "分" 、 「実際」 ) 、
//これはデータセットの最後のイベントまでの仮定の期間を計算することになっていましたが、うまくいきません。
日付の違い ( : 時間 、コルマックス ( 時間 ) ) 、 "分" 、
「実際」
)
) 、
) ;
dt << 実行式 ;
カラム ( dt 、 「イベント期間」 ) << 式を削除 ;
//行を追加する前にテーブルの元の長さを記録します。
// Forループで直接Nrow()を使用すると、無限ループが発生します。
rowN = N列 () ;
//元の各行について、各イベントの期間と同じ数の新しい行を生成します。
にとって ( 私 = 1 、私 <= rowN 、私 ++、
ロビ = dt << 行を取得 ( 私 ) ;
にとって ( z = 1 、 z <= ( : 名 ( 「イベント期間」 )[ 私 ] - 1 ) 、 z ++、
z ;
dt << 行を追加する ( ロビ ) ;
dt << 実行式 ;
) ;
) ;
//次の式を簡単にするためにデータテーブルをもう一度ソートします。
dt << ソート ( によって ( ID 、時間 ) 、上昇 、テーブル交換 ( 1 ) ) ;
//各行に実際の時間を指定して新しい列を追加します。
新しいコラム ( "リアルタイム" 、
数値 、
連続的 、
フォーマット ( "yyyy-mm-ddThh:mm" 、 16 ) 、
入力フォーマット ( "yyyy-mm-ddThh:mm" ) 、
式 (
もし (
行 () == 1 、 : 時間 、
: ID > 遅れ ( : ID 、 1 ) 、 : 時間 、
//これは前の時間表示に分を追加します。
遅れ ( : リアルタイム 、 1 ) + 60
)
) 、
) ;
// IDでマーカーの色を設定します
現在のデータ表 () << 列ごとの色 (
ID 、
色 ( 1 ) 、
カラーテーマ ( 「JMPデフォルト」 ) 、
マーカー ( 0 ) 、
マーカーテーマ ( 「」 ) 、
連続スケール ( 0 ) 、
逆スケール ( 0 ) 、
除外された行 ( 0 )
) ;;
//実際の時間表示でバブルプロットを作成します
バブルプロット (
バツ ( : バツ ) 、
Y ( : よ ) 、
時間 ( : リアルタイム ) 、
ID ( : ID ) 、
役職 ( 1.61111111111111 、 2.7 ) 、
SendToReport (
ディスパッチ (
{} 、
"リアルタイムID IDを横切るxによるyのバブルプロット" 、
アウトラインボックス 、
{ タイトルを設定 ( "リアルタイムID ID全体のxによるyのバブルプロット - 正しい時間間隔!!!" )}
) 、
ディスパッチ ( {} 、 「1」 、 ScaleBox 、 { 分 ( 0.5 ) 、マックス ( 3.5 ) 、株式会社 ( 0.5 ) 、マイナーティック ( 1 ) 、回転ラベル ( 「横」 )} ) 、
ディスパッチ ( {} 、 「2」 、 ScaleBox 、 { 分 ( 0.5 ) 、マックス ( 3.5 ) 、株式会社 ( 0.5 ) 、マイナーティック ( 1 ) 、回転ラベル ( 「横」 )} )
)
) ;
ありがとうダン
問題は正しいです。他のプラットフォームには重みまたは周波数オプションがあるので、プラットフォームに「期間」オプションを追加することが可能かどうか、私は実際に疑問に思いました。
重要なことは、データはあらゆる種類の構造を持つことができるということです。たとえば、各イベントの開始時刻と終了時刻の列です。あるいは、開始時間と期間です。さらに、多くの場合、最後のイベントの期間を定義するという問題があります。
私の場合、イベント間のアニメーションはそれほど重要ではありません。もっと重要なのは、チェスゲームのように各時点でのイベントの正しい相対位置です。各観測から一定の間隔でデータが収集されず、変更のみが記録される場合に問題が発生します(イベントログ)。
ロン
こんにちはロン、
例をありがとう - バブルプロットのために考慮すべき興味深い他のいくつかのイベントモデルがあります。 ここに2つの問題があると思います。
1)バブルプロットにはイベント期間の概念がありません。 各観測は瞬間的であり、IDグループは観測間で直線的に移動すると想定されます。 テーブルを拡張しても位置は一定に保たれるので、補間は望ましくないと思います。
2)より大きな問題は、時間それ自体が各観測間で直線的にアニメーション化されているが、全体的に直線的ではないということです。 これは、間に大きなギャップがあるクラスタに観測が表示される場合に役立ちますが、アニメーションが一定の速度で時間をたどると予想される場合には、表示が歪んで表示されることがあります。
これらの問題が正しいと思われる場合は、今後のバブルプロット作業の提案としてこれらを追加します。
宜しくお願いします、
- ダン