我想生成一个动态图,它绘制了一个新点,但保留了已经跟踪过的点。以下代码模拟了要求。
seq_x<-seq(1,10)
seq_y<-function(y)
{
z<-y^2+y+1
return (c(z))
}
yrange<-seq_y(1)
yrange[2]<-seq_y(length(seq_x))
for(i in 1:length(seq_x) )
{
xdata<-seq_x[1:i]
ydata<-seq_y(xdata)
plot(xdata,ydata,xlim=range(seq_x),ylim=range(yrange),type="o",col="royalblue",plot.first=grid())
Sys.sleep(1)
}
但每次循环执行时,都会生成一个新的图。 情节明显闪烁(因为循环中的plot
调用)。 如何在同一个绘图中为跟踪绘制新点,以便跟踪在同一窗口中显示 ?
答案 0 :(得分:0)
由于plot.default()每次在循环之前初始化它并在之后使用points()添加点,因此会生成一个新图形。
这符合我认为您的需要:
seq_x<-seq(1,10)
f_y<-function(y){
z<-y^2+y+1
return (c(z))
}
seq_y<-f_y(seq_x)
plot(x=seq_x[1],y = seq_y[1], xlim = range(seq_x),ylim=range(seq_y),
xlab = "x",ylab = "y")
for(i in 1:length(seq_x) ){
points(seq_x[i],seq_y[i],type="o",col="black")
Sys.sleep(1)
}