从 x,y,z data.frame 制作线框图

发布于 2024-12-04 17:46:37 字数 597 浏览 1 评论 0原文

我有一个 x/y/z 点的 data.frame。我知道如何使用 rgl 包制作 3d 散点图,但我想连接散点图中的每个点以制作线框或曲面图。

这段代码返回散点图

library(rgl)
Data <- expand.grid(x=seq(0,10),y=seq(0,10))
Data$z <- Data$x^2+Data$y^2
plot3d(Data)

虽然这段代码返回一个空白图:

plot3d(Data,type='wire')

我可以用格子绘制我想要的图:

library(lattice)
wireframe(z~x+y,Data)

我什至可以让它旋转:

library(TeachingDemos)
rotate.wireframe(z~x+y,Data)

但我更喜欢 rgl 而不是 lattice 因为它渲染速度更快,并且可以让您用鼠标旋转绘图。

在 rgl 中制作线框图的正确方法是什么?

I have a data.frame of x/y/z points. I know how to make a 3d scatterplot using the rgl package but I would like to connect each point in the scatterplot to make a wireframe or surface plot.

This code returns the scatter plot

library(rgl)
Data <- expand.grid(x=seq(0,10),y=seq(0,10))
Data$z <- Data$x^2+Data$y^2
plot3d(Data)

While this code returns a blank graph:

plot3d(Data,type='wire')

I can make the plot I want with lattice:

library(lattice)
wireframe(z~x+y,Data)

I can even make it rotate:

library(TeachingDemos)
rotate.wireframe(z~x+y,Data)

But I prefer rgl over lattice because it renders much quicker and lets you rotate the plot with the mouse.

Whats the proper way to make a wireframe plot in rgl?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

离不开的别离 2024-12-11 17:46:37

rgl 中的曲面绘图函数是 persp3d,与 base::persp 类似,它需要一个矩阵作为 z 参数的输入,

zmat <- matrix(Data$z, 11,11)
persp3d(x=seq(0,10), y=seq(0,10), z=zmat)

在使用我使用的屏幕抓取程序捕获它之前,我确实旋转了该图形:
屏幕截图

The surface drawing plot function in rgl is persp3d and like base::persp, it needs a matrix as input to the z argument

zmat <- matrix(Data$z, 11,11)
persp3d(x=seq(0,10), y=seq(0,10), z=zmat)

I did spin this graphic a bit before capturing it with a screen grabbing program I use:
Screenshot

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文