Постройте трехмерный график с ползунком, чтобы контролировать количество нанесенных точек

У меня есть данные, которые представляют собой движение объекта в трехмерном пространстве через равные промежутки времени. Данные приведены ниже:

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

(x,y,z) — положение объекта в момент времени t. Я хочу построить трехмерный график, где он показывает полное движение объекта в трехмерном пространстве, но иметь ползунок или что-то в этом роде, где я могу выбрать временной диапазон (скажем, от 500 до 750) и увидеть движение объекта в 3D пространство. Итак, здесь у нас есть 4 измерения: x, y, z - это позиции и время как 4-е измерение, и мы используем ползунок для управления построением точек с этим временем. [Пример в Mathematica ниже дает хорошее представление об этом]

Чтобы было понятнее. Сначала мы рисуем полное движение объекта в трехмерном пространстве с момента времени 1 до N. Затем, управляя ползунком, мы рисуем движение одного и того же объекта между отметками времени от t1 до t2. Также важно отображать, в какое время находится ползунок (поскольку я должен отметить некоторые интересные временные метки, основанные на движении).

Я искал то же самое в Google, но ни один пример не был достаточно близок, чтобы получить то, что я хочу. Все они привязывают ползунок к одной из переменных оси (скажем, x или y, что может быть временем), но мы должны привязать его к 4-му измерению, времени. dygraphs был многообещающим, но у меня были проблемы, подобные тем, которые обсуждались выше (также я не нашел никакой поддержки 3D).

Этот в Mathematica интересно. Но у меня нет на него лицензии. Он просто перемещает точку на трассируемом 3D-пути. Это также может решить мою проблему, но я должен знать значения метки времени, когда приостанавливаю его.

Решение в R мне подходит, потому что у него нет проблем с лицензированием. Или в Matlab, если он не использует какие-либо расширенные наборы инструментов визуализации. Или Питон.

Заранее спасибо.


person inblueswithu    schedule 14.09.2016    source источник


Ответы (1)


Это сырой пример, который можно настроить по желанию. Он использует 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))

введите здесь описание изображения

person Enrique Pérez Herrero    schedule 14.09.2016
comment
Это довольно близко. Может ли он случайно оживить движение? B'se я должен вручную перемещать ползунок в каждую позицию и ждать, пока указатель переместится. Я могу ожидать большего, но это помогает мне. Еще раз спасибо! - person inblueswithu; 15.09.2016
comment
Кроме того, я на самом деле хотел перерисовать сюжет на основе временных границ, чтобы я мог видеть движение объекта. - person inblueswithu; 15.09.2016
comment
Также: stackoverflow.com/questions/1298100/ и programmingr.com/ контент/анимация-r - person Enrique Pérez Herrero; 15.09.2016
comment
На самом деле, этот график не очень помогает. Мне нужно построить движение объекта между t1 и t2. Или анимация, которая может помочь мне найти эти точки от t1 до t2 вместе с наблюдением за путем, по которому они прошли (имея уже существующий след пути, как в этом примере Mathematica, важно). Кроме того, я не мог вращать ось, чтобы видеть под разными углами. Все это имеет решающее значение для моей работы, так как я должен наблюдать за этим в течение длительного периода времени, скажем, 1500 отметок времени в небольшом регионе, поэтому в движении будет много перекрывающихся позиций. Вот почему я был разборчивым или жестким в своих требованиях. - person inblueswithu; 15.09.2016
comment
Я даже не уверен, возможно ли это вообще в R или в python. - person inblueswithu; 15.09.2016
comment
Те ссылки, которые помогают конвертировать в гифки или видеоклипы, бесполезны, так как я хочу иметь интерактивные графики (а не статические). - person inblueswithu; 15.09.2016