用滑块绘制三维图形来控制绘制点的数量
问题描述:
我有数据,它是以一定的时间间隔在三维空间中移动物体的数据。数据是如下:用滑块绘制三维图形来控制绘制点的数量
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的完整移动。然后,通过控制滑块,我们在t1到t2之间绘制同一对象的移动时间戳。显示滑块在什么时候显示也很重要(因为我必须根据移动记录一些感兴趣的时间戳记)。
我已经谷歌搜索一样,但没有一个例子足够接近我想要的东西。所有这些将滑块绑定到其中一个轴变量(比如说可能是时间的x或y),但我们必须将它绑定到第四维,即时间。 dygraphs是有希望的,但我有类似的问题,如上所述(也没有找到任何3D支持)。
This one in Mathematica is interesting。但我没有许可证。它只是在追踪的3D路径上移动一个点。这也可以解决我的问题,但是我应该能够在暂停时知道时间戳值。
解决方案R对我很有好处,因为它没有任何授权问题。或者在Matlab中不使用任何高级可视化工具箱。或Python。
在此先感谢。
答
这是一个可根据需要进行定制的原始示例。它采用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))
这是八九不离十。它可以通过任何机会为运动设置动画效果吗? B'se我必须手动将滑块移动到每个位置,然后等待指针移动。我可能会期待更多,但这对我有帮助。再次感谢! – inblueswithu
另外,我实际上是想根据时间范围重新绘制情节,以便我可以看到物体的运动。 – inblueswithu
另请参阅:http://stackoverflow.com/questions/1298100/creating-a-movie-from-a-series-of-plots-in-r和http://www.programmingr.com/content/animations-r/ –