我想以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。我的信息是:
z:z的值来自函数:
fft_amplitude&lt; - function(x){sqrt((Re(fft(x)))^ 2+(Im(fft(x)))^ 2)}
应从CSV文件中读取此函数的输入值。如何使用此信息绘制3D图表persp
?