在R中显示3D图

时间:2013-09-24 13:13:36

标签: r 3d

我想以3D形式显示信息。我正在逐行读取文件中的值,将这些值保存在列表中:

point<-10
spalte<-500
for(i in 1:point)
{
  line<-readLines(con,n=1,warn=FALSE)
  m<-list(as.integer(unlist(strsplit(line,split=","))))
  datalist<-c(datalist,sapply(m,"[[",spalte))
}

point表示应读取多少个值,Spalte表示要读取的列。我的文件有10000行和7500列。

然后我计算每个值的幅度:

fft_amplitude <- function(x) {sqrt((Re(fft(x)))^2+(Im(fft(x)))^2)}
df<-matrix(unlist(datalist,use.names=FALSE),ncol=1,byrow=TRUE)
r<-apply(df,2,FUN=fft_amplitude)

在这种情况下,我可以使用2D图表:

plot(r[1:(point/2)],pch=20,ylim=c(0,20000),xlim=c(0,point),cex=0.9,ylab="amplitude",xlab="Frequenz")

但我希望以3个维度(时间,频率和幅度)显示此信息。我创建了我的3D图表:

x<-1:length(datalist)
y<-1:length(datalist)
z<-matrix(unlist(datalist,use.names=FALSE),ncol=length(datalist),nrow=length(datalist),byrow=TRUE)
z<-apply(z,2,FUN=fft_amplitude)
persp(x,y,z,theta = 30, phi = 40, expand = 0.5, col = "lightblue")

此代码显示3维图,但结果与二维图不同。如何以3D形式显示数据?

更新

我认为我应该更简单地解释一下我的问题:

我想要一个3D diagramm。我的信息是:

  • x:时间-----可能是1:n(整数)
  • Y:频率---它可能是1:n,如x
  • z:z的值来自函数:

    fft_amplitude&lt; - function(x){sqrt((Re(fft(x)))^ 2+(Im(fft(x)))^ 2)}

应从CSV文件中读取此函数的输入值。如何使用此信息绘制3D图表persp

0 个答案:

没有答案