Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从数据打印三维曲面 我编写了C++代码来数值求解一个PDE。我想画出结果。我已经将数据输出到一个ascii文件,作为3列数字。x坐标、y坐标和z坐标。这看起来像 0.01 7 -3 -12 1.2 -0.24 ..._C++_R_Dataframe_Plot_Octave - Fatal编程技术网

从数据打印三维曲面 我编写了C++代码来数值求解一个PDE。我想画出结果。我已经将数据输出到一个ascii文件,作为3列数字。x坐标、y坐标和z坐标。这看起来像 0.01 7 -3 -12 1.2 -0.24 ...

从数据打印三维曲面 我编写了C++代码来数值求解一个PDE。我想画出结果。我已经将数据输出到一个ascii文件,作为3列数字。x坐标、y坐标和z坐标。这看起来像 0.01 7 -3 -12 1.2 -0.24 ...,c++,r,dataframe,plot,octave,C++,R,Dataframe,Plot,Octave,我经常有超过1000个数据点。我想画一个曲面。我能够加载R和八度的数据。在R散射图3D中工作,在倍频程图3中工作。但是,我希望生成一个曲面,而不是不同的点(scatterplot3d)或曲线(plot3)。我正在努力让mesh或surf从倍频程的数据中工作。我正在寻找一种简单的方法,用八度、R、C++或其他程序在三维空间中绘制一个曲面。 < P>你可以用基本的R函数 SIPP强制将数据转换成正确的格式。这需要一个唯一x值的向量,一个唯一y值的向量,以及一个z值的矩阵,它是长度(唯一(x))by长

我经常有超过1000个数据点。我想画一个曲面。我能够加载R和八度的数据。在R散射图3D中工作,在倍频程图3中工作。但是,我希望生成一个曲面,而不是不同的点(scatterplot3d)或曲线(plot3)。我正在努力让mesh或surf从倍频程的数据中工作。我正在寻找一种简单的方法,用八度、R、C++或其他程序在三维空间中绘制一个曲面。

< P>你可以用基本的R函数<代码> SIPP强制将数据转换成正确的格式。这需要一个唯一x值的向量,一个唯一y值的向量,以及一个z值的矩阵,它是
长度(唯一(x))
by
长度(唯一(y))
矩阵

假设您的数据如下所示:

z <- tapply(df$z, list(df$x, df$y), mean)
persp(unique(df$x), unique(df$y), z, 
      col = "gold", theta = 45, shade = 0.75, ltheta = 90)
x3-2.480205-3.141593-0.78914051
#> 4 -2.149511 -3.141593 -0.54694816
#> 5 -1.818817 -3.141593 -0.24548549
#> 6 -1.488123 -3.141593  0.08257935
然后您可以创建如下矩阵:

z <- tapply(df$z, list(df$x, df$y), mean)
persp(unique(df$x), unique(df$y), z, 
      col = "gold", theta = 45, shade = 0.75, ltheta = 90)

如果您的x和y坐标没有很好地对齐,则更通用的方法是:


z我可以建议试一试吗?我自己没试过,但看起来很有希望。理论上,它应该镜像octave/matplotlib命令。该页面上有几个
surf
示例:)看起来很有趣,我来看看Goeswang是怎么说的,我假设你犯的错误是
surf(X,Y,Z)
中的X和Y需要是一个完全定义的网格,而不是X和Y坐标向量。(即X、Y和Z都需要是相同大小的矩阵)。仔细阅读这本书。如果你所拥有的是x,y,z元组,你最好的办法是使用<代码> IpnP<代码>将这些值先插入到一个规则的x,y网格中,然后用SURF绘制插值的Z值。我用GrDATA(x,y,z,席,yi)现在用了八个字节,看了一些更详细的数据,并取得了一些成功。我喜欢创建矩阵的部分,因为那是我在r上遇到麻烦的地方。但是,persp不需要增加x和y值吗?我的数据点可能非常随机。@epiliam是的,因此您将排序的唯一
x
和排序的唯一
y
值传递给
persp
(或者使用
cut
将它们组合在一起)。使用这些唯一值作为z矩阵的列和行。如果您有一些示例数据可以以
dput
格式添加到您的问题中,我可以向您展示如何在您无法获得上述解决方案的情况下进行添加。