我有数据,这是一个物体在三维空间中的运动,在一定的时间间隔。数据如下:
Time X Y Z
1 1 1 1
2 2 1 2
3 2 0 1
4 3 2 1
.....
(x,y,z)是物体在时间t处的位置。我想绘制一个3D图,它显示物体在3d空间中的完全运动,但是有一个滑块或类似的东西,我可以选择一个时间范围(比如500到750),并看到物体在3D空间中的运动。所以,这里我们有4维: x,y,z是第4维的位置和时间,用滑块控制当时点的绘制。下面的Mathematica示例给出了一个很好的概念
让这件事更清楚。我们首先绘制物体在3D空间中从时间1到N的完整运动,然后通过控制滑块,在t1到t2时间戳之间绘制相同对象的运动。显示滑块在什么时候也很重要(因为我必须根据运动记录一些感兴趣的时间戳)。
我也在谷歌上搜索过,但没有一个例子能让我得到我想要的东西。所有这些都将滑块绑定到一个轴变量(例如x或y,可能是时间),但我们必须将其绑定到第4维,时间。图形是有希望的,但我有类似的问题,如上文所讨论的(而且,没有找到任何3d支持)。
This one in Mathematica is interesting。但我没有执照。它只是移动了三维路径上的一个点。这也可以解决我的问题,但我应该能够知道时间戳值时,我暂停它。
R中的解决方案对我有好处,因为它没有任何许可问题。或者在Matlab中,如果它不使用任何高级可视化工具箱。或者是Python。
提前谢谢。
发布于 2016-09-14 13:01:34
这是一个可以根据需要定制的原始示例。它使用manipulate
和plot3D
。
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))
https://stackoverflow.com/questions/39498995
复制