graphics::persp

x <- seq(-10, 10, length.out = 30)
y <- x
f <- function(x, y) { r <- sqrt(x^2+y^2); 10 * sin(r)/r }
z <- outer(x, y, f)
z[is.na(z)] <- 1
op <- par(bg = "white")
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue")
persp(x, y, z, theta = 30, phi = 30, expand = 0.5, col = "lightblue",
      ltheta = 120, shade = 0.75, ticktype = "detailed",
      xlab = "X", ylab = "Y", zlab = "Sinc( r )"
) -> res
round(res, 3)

lattice::wireframe

library(lattice) 
# 构建网格数据
d <- expand.grid(x =10:60, y = 5:40,g=2:3)
# 构建因变量
d$z <-log((d$x^d$g+d$y^2)*d$g)
# 绘制曲面拟合图
wireframe(z~x*y,
          data = d,
          shade=T,  # 曲面颜色渲染
          groups=g, #分组
          drape=T,   # 是否以右侧的色柱区分曲面
          colorkey=T,  # 是否显示色标
          scales=list(arrows=T), #是否显示箭头
          screen=list(z=45,x=-60) #调整图片角度

rgl::plot3d

library(rgl)
d <- expand.grid(x =10:60, y = 5:40,g=2:3)
d$z <-log((d$x^d$g+d$y^2)*d$g)
plot3d(d$x,d$y,d$z,
       type="s",
       size = 0.5,
       col=terrain.colors(length(d$z)))

在这里插入图片描述
plot3d()所绘制的图形是可以用鼠标调整视角的。

plot3d(lm(mpg ~ wt + I(wt^2) + qsec, 
          data = mtcars),
       plane.col =topo.colors(1))

rgl::surface3d

# 设置x,y,z值
z <- 4 * volcano        
x <- 8 * (1:nrow(z))   
y <- 6 * (1:ncol(z))   
# 设置 颜色
zlim <- range(z)
zlen <- zlim[2] - zlim[1] + 1
colorlut <- topo.colors(zlen) 
col <- colorlut[ z - zlim[1] + 1 ] 
# 绘制曲面图
open3d()
surface3d(x, y, z, color = col, back = "lines")

scatterplot3d::scatterplot3d

# 绘制3D 散点图
data(trees)
s3d <- scatterplot3d(trees, 
                     type="p", 
                     highlight.3d=TRUE,
                     angle=60, 
                     #scale.y=0.8, 
                     pch=16, 
                     zlim = c(0,80),
                     col.grid="lightblue",
                     main="scatterplot3d")
# 散点图中添加拟合曲面
tree_lm <- lm(Volume ~ Girth + Height,data = trees)
s3d$plane3d(tree_lm, lty.box = "solid")
mesh函数绘制三维网格
调用格式:mesh(x,y,z,c)
其中x,y为网格坐标矩阵;z是网格点上的高度矩阵;c表示不同高度下的曲面颜色,默认正比于形高度,c=z;
当x,y省略时,z的第二维下标当作x轴坐标,z的第一维下标当作y轴坐标;
x=1:3;
y=2:4;
[X,Y]=meshgrid(x,y);
Z=X+Y;
mesh(X,Y,Z,-Z);
surf函数
				
R语言绘制三维△▲ 大部分情况下,我们使用二维的像就足以展示我们的数据,但是也无法排出在一些特定的情况下,需要将数据在三维空间进行展示,所以今天小编就给大家分享三维的画法吧~ NO.01:三维 1.下载plot3D包并调用 BiocManager::install("plot3D") library(plot3D) 2.绘制3D的坐标向量 z <- seq(0, 20, 0.1) x <- cos(z) y <- sin(z) 3.绘制三维并美化 参数:phi:控制三维
美国Golden Software 公司编制的一款以画三维(等高线,image map, 3d surface)的软件。该软件简单易学,可以在几分钟内学会主要内容,且其自带的英文帮助(help菜单)对如何使用该软件解释的很详细,其中的tutorial教程更是清晰的介绍了surfer的简单应用。 Surfer的主要功能是绘制等高线(contour map),此外它还可以绘制post map, classed post map, vector map, image map, wireframe map, 3d surface map,等形式的形。Surfer是具有插值功能的绘软件,因此,即使你的数据是不等间距的,依然可以用它作,其功能是比较强的,但没有各种投影变化功能。 主要功能: 1、等高线的绘制 2、在等高线上加背景地 3、件白化(blank) 4、数据文件统计功能 5、粘贴和分类粘贴子 6、生成向量 7、形输出 8、辅助功能:用函数直接作、标注文字、画简单的形等。
#预测脚本 predictgrid<-function(model,xvar,yvar,zvar,res=16,type=NULL){ xrange<-range(model$model[[xvar]]) yrange<-range(model$model[[yvar]]) newdata<-expand.grid(x=seq(xra...
1 条形条形通过垂直或水平的条形展示分类变量的频数。barplot(height)#height为矩阵或向量1.1 简单条形若height是一个向量,它的值则确定了各条形的高度,可以绘制成一幅垂直条形。将height=TRUE,则生成水平条形。 install.packages(“vcd”) library(vcd) count<-table(Arthritis
R语言是一种广泛使用的统计分析和数据可视化的编程语言。要绘制三维曲面,我们可以使用R中的一些包和函数。 首先,我们需要安装和加载一些相关的包,例如rgl和gridExtra。可以使用以下命令安装这些包: install.packages("rgl") install.packages("gridExtra") 然后,我们需要准备一些数据来绘制曲面。假设我们有一个包含x、y和z坐标的数据框,可以使用以下命令创建一个示例数据框: data <- data.frame(x = seq(-10, 10, 0.5), y = seq(-10, 10, 0.5)) data$z <- with(data, sin(sqrt(x^2 + y^2)) / sqrt(x^2 + y^2)) 接下来,我们可以使用rgl包中的plot3d函数来创建一个三维曲面。例如,我们可以使用以下命令绘制出上述数据框的曲面: library(rgl) plot3d(data$x, data$y, data$z, type = "surface", col = "blue") 通过调整参数,我们可以改变曲面的颜色、填充、阴影等效果,以更好地呈现数据。 要绘制多个曲面,我们可以使用gridExtra包中的grid.arrange函数。例如,我们可以使用以下命令在同一个形设备中绘制两个曲面: library(gridExtra) p1 <- plot3d(data$x, data$y, data$z, type = "surface", col = "blue") p2 <- plot3d(data$x, data$y, -data$z, type = "surface", col = "red") grid.arrange(p1, p2, nrow = 1) 最后,我们可以使用一些额外的函数和包来添加其他元素到曲面中,例如坐标轴标签、例、标题等。 综上所述,使用R语言绘制三维曲面包括安装和加载相关包、准备数据、使用plot3d函数绘制曲面、调整参数以改变形效果,并可以使用gridExtra包绘制多个曲面