Реальное время, автообновление, инкрементальный график в R

Я пытаюсь создать динамический график, вроде автоматического обновления, инкрементный, возможно, в режиме реального времени. Я хочу сделать что-то вроде этого http://www.youtube.com/watch?v=s7qMxpDUS3c

Это то, что я сделал до сих пор. Предположим, у вас есть временной ряд в data.frame с именем temp. Первый столбец - это время, а второй столбец - там, где находятся значения.

for(i in 1: length(temp$Time[1:10000]))
{
flush.console()
plot(temp$Time[i:i+100],temp$Open[i:i+100],
xlim=c(as.numeric(temp$Time[i]),as.numeric(temp$Time[i+150])),
ylim=c(min(temp$Open[i:i+100]),max(tmep$Open[i:i+120])))
Sys.sleep(.09)
}

Это происходит постепенно, но я не получаю длинный временной ряд в 100 единиц, вместо этого я получаю только одно обновление.

 user150717606 июл. 2012 г., 19:51
Spacedman, спасибо за ответ. Первая опечатка. Второе не должно вносить никаких изменений в фактический результат. На самом деле я пытался, и он ничего не делал.
 Spacedman06 июл. 2012 г., 18:28
is max (tmep $ Открыть опечатку? Должно быть «temp» »не надо? Вы вставили это из своей сессии? Это должно дать вам предупреждение ...
 Campa02 мар. 2018 г., 17:47
Как temp обновляется, когда поступают данные, например. из файла?
 Spacedman06 июл. 2012 г., 18:30
length (temp $ Time [1: 10000]) всегда будет 10000, даже если вектор не длиннее 10000 (он дополняется NA). для (я в 1: 10000) должен делать хорошо.

Ответы на вопрос(1)

Решение Вопроса

n=1000
df=data.frame(time=1:n,y=runif(n))
window=100
for(i in 1:(n-window)) {
    flush.console()
    plot(df$time,df$y,type='l',xlim=c(i,i+window))
    Sys.sleep(.09)
}

Проходя через ваш код:

# for(i in 1: length(temp$Time[1:10000])) { 
for (i in 1:10000) # The length of a vector of 10000 is always 10000
    flush.console()
    # plot(temp$Time[i:i+100],temp$Open[i:i+100],
    # Don't bother subsetting the x and y variables of your plot.
    # plot() will automatically just plot those in the window.
    plot(temp$Time,temp$Open, 
    xlim=c(as.numeric(temp$Time[i]),as.numeric(temp$Time[i+150]))
    # Why are you setting the y limits dynamically? Shouldn't they be constant?
    # ,ylim=c(min(temp$Open[i:i+100]),max(tmep$Open[i:i+120])))
    Sys.sleep(.09)
}
 user150717606 июл. 2012 г., 22:18
OMG ты мой любимый! Я по-мужски люблю тебя! это именно то, чего я хотел достичь. Спасибо, гуру. Чтобы ответить на ваш последний вопрос. Это не константа, поскольку они являются открытыми ценами, скажем, для вторых данных?
 29 нояб. 2014 г., 19:38
 29 нояб. 2014 г., 19:27
@nograpes, это очень полезно, спасибо! Я подозреваю, что это не относится кggplot, Вы знаете подобноеggplot2 решение?

Ваш ответ на вопрос