2016-09-14 135 views
3

我有數據,它是以一定的時間間隔在三維空間中移動物體的數據。數據是如下:用滑塊繪製三維圖形來控制繪製點的數量

Time X Y Z 
1  1 1 1 
2  2 1 2 
3  2 0 1 
4  3 2 1 
..... 

(X,Y,Z)是對象的位置在時間。我想繪製一個三維圖形,它顯示了三維空間中物體的完整運動,但是要有一個滑動條或那種我可以選擇一個時間範圍(比如500到750)並查看物體在3D空間。所以,這裏我們有4個維度:x,y,z是位置和時間作爲第四維,並使用滑塊來控制當時點的繪圖。 [在Mathematica中的例子給出了一個好主意]

爲了更清楚。我們首先繪製物體在三維空間中從時間1到N的完整移動。然後,通過控制滑塊,我們在t1t2之間繪製同一對象的移動時間戳。顯示滑塊在什麼時候顯示也很重要(因爲我必須根據移動記錄一些感興趣的時間戳記)。

我已經谷歌搜索一樣,但沒有一個例子足夠接近我想要的東西。所有這些將滑塊綁定到其中一個軸變量(比如說可能是時間的x或y),但我們必須將它綁定到第四維,即時間。 dygraphs是有希望的,但我有類似的問題,如上所述(也沒有找到任何3D支持)。

This one in Mathematica is interesting。但我沒有許可證。它只是在追蹤的3D路徑上移動一個點。這也可以解決我的問題,但是我應該能夠在暫停時知道時間戳值。

解決方案R對我很有好處,因爲它沒有任何授權問題。或者在Matlab中不使用任何高級可視化工具箱。或Python。

在此先感謝。

回答

4

這是一個可根據需要進行定製的原始示例。它採用manipulateplot3D

library(manipulate) 
library(plot3D) 

min_time <- 1 
max_time <- 100 
time_interval <- min_time:max_time 

# Create data frame 
DF <- data.frame(t = time_interval) 

# Time parametric functions 
X <- function(t) { 
    return(2 * t) 
} 

Y <- function(t) { 
    return(t ** 2) 
} 

Z <- function(t) { 
    return(10 * cos(t/100)) 
} 
# Update data frame 
DF$x <- sapply(DF$t, X) 
DF$y <- sapply(DF$t, Y) 
DF$z <- sapply(DF$t, Z) 

# Use manipulate with RStudio 
manipulate({ 
    lines3D(x = DF$x, y = DF$y, z = DF$z) 
    scatter3D(
    x = DF$x[t], 
    y = DF$y[t], 
    z = DF$z[t], 
    add = TRUE 
) 
}, t = slider(min_time, max_time)) 

enter image description here

+1

這是八九不離十。它可以通過任何機會爲運動設置動畫效果嗎? B'se我必須手動將滑塊移動到每個位置,然後等待指針移動。我可能會期待更多,但這對我有幫助。再次感謝! – inblueswithu

+1

另外,我實際上是想根據時間範圍重新繪製情節,以便我可以看到物體的運動。 – inblueswithu

+1

另請參閱:http://stackoverflow.com/questions/1298100/creating-a-movie-from-a-series-of-plots-in-r和http://www.programmingr.com/content/animations-r/ –