我想以 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图表。我的信息是:
- x:Time ----- 可以是 1:n(整数)
- Y:Frequency ---它可能是 1:n 像 x
z:z的值来自一个函数:
fft_amplitude <- 函数(x) {sqrt((Re(fft(x)))^2+(Im(fft(x)))^2)}
此函数的输入值应从 CSV 文件中读取。如何persp
使用此信息绘制 3D 图?