热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

R_3D图(三)

作者:李誉辉四川大学在读研究生前言这篇是plot3D包绘图系列之三,前一篇请戳:R_3D图(二),这一章节主要聚焦三维图的制

640?wx_fmt=gif


作者:李誉辉  

四川大学在读研究生 


前言

这篇是plot3D包绘图系列之三,前一篇请戳:R_3D图(二),这一章节主要聚焦三维图的制作。做教程狠费精力的,别忘了点赞和转发。谢谢。


3三维图(3-D perspectives)
  • persp3D() 是persp()函数的扩展

  • ribbon3D() 与persp3D()有些类似,但不是多边形网格,而是带状的网格的曲面。

  • hist3D()产生三维的直方图。


3.1

语法

persp3D (x = seq(0, 1, length.out = nrow(z)),   y = seq(0, 1, length.out = ncol(z)), z, ...,   colvar = z, phi = 40, theta = 40,  col = NULL,  NAcol = "white", breaks = NULL,  border = NA, facets = TRUE, colkey = NULL, resfac = 1,  image = FALSE, contour = FALSE, panel.first = NULL,  clim = NULL, clab = NULL, bty = "b",   lighting = FALSE, shade = NA, ltheta = -135, lphi = 0,   inttype = 1, curtain = FALSE, add = FALSE, plot = TRUE)  ribbon3D (x = seq(0, 1, length.out = nrow(z)),   y = seq(0, 1, length.out = ncol(z)), z, ...,   colvar = z, phi = 40, theta = 40,   col = NULL,  NAcol = "white", breaks = NULL,  border = NA, facets = TRUE, colkey = NULL, resfac = 1,  image = FALSE, contour = FALSE, panel.first = NULL,   clim = NULL, clab = NULL, bty = "b",   lighting = FALSE, shade = NA, ltheta = -135, lphi = 0,   space = 0.4, along = "x",   curtain = FALSE, add = FALSE, plot = TRUE)   hist3D (x = seq(0, 1, length.out = nrow(z)),  y = seq(0, 1, length.out = ncol(z)), z, ...,    colvar = z, phi = 40, theta = 40,   col = NULL, NAcol = "white", breaks = NULL,  border = NA, facets = TRUE, colkey = NULL,   image = FALSE, contour = FALSE,  panel.first = NULL, clim = NULL, clab = NULL, bty = "b",   lighting = FALSE, shade = NA, ltheta = -135, lphi = 0,  space = 0, opaque.top = FALSE, zmin = NULL,   add = FALSE, plot = TRUE)    

参数解释:

  • z, 为二维矩阵数据,用于绘制3D透视图。

  • x, y ,可以是2个向量,也可以是1个矩阵,
    如果是向量,则x的长度必须等于z的行数,y的长度必须等于z的列数。
    如果是矩阵(只用于persp3D), xy的维度应该与矩阵z相同。

  • colvar,指定着色的变量,如果给出,则必须与矩阵z维度相同。
    如果是NULL,NA,或FALSE将根据colvar切换颜色,
    仅当boder参数被指定颜色,shade参数>0,或lighting = TRUE才会产生好的效果。

  • col, 表示指定颜色色板,用于colvar颜色,
    如果col = NULL, 且colvar指定了,则默认“红-黄-蓝”色板。
    如果col = NULL, 且colvar指定,则col默认为grey灰度板。
    为了与透视图相符,设定colvar = NULL, 使col为一个矩阵,其维度为nrow(z)-1行,ncol(z)-1列。

  • NAcol, 表示指定colvar中缺失值的颜色,默认为白色。

  • breaks, 为数字向量,表示colvar断点,默认增序排列,无序向量会被自动排序。

  • colkey, 为逻辑值或NULL(默认)或列表。表示指定图例参数。

  • add, 为逻辑值,表示是否将该绘图对象添加到现有的绘图对象中,默认FALSE新建图层,TRUE则添加图层。

  • plot, 为逻辑值, 表示是否绘图,默认TRUE则绘图,FALSE则返回视角转换矩阵。

  • clab, 表示指定图例标题内容。colkey=TRUE生效。

  • clim, 表示指定图例显示范围,当colvar指定时生效,clim范围超出colvar则超出部分显示NA。

  • resfac, 表示指定x和y的分辨率因子,长度为1或2的数字向量指定,
    数字大于1,则增加分辨率,通过插值z增加。
    若向量长度为1,则在x和y对应的z插值数量相同。

  • theta, phi, 表示指定观察透视图的方向,与persp()中一致。

  • border, 表示指定曲面网格边线的颜色,默认NA不显示曲面网格边线。

  • facets, 为逻辑值或NA,表示是否指定曲面网格的颜色,TRUE则用col参数指定曲面网格的颜色,
    FALSE则为网格为颜色为白色且网格边线为col指定的颜色(前提是border=NA)。

  • image, 为逻辑值,表示是否在绘图立方体插入另一个图,
    如果TRUE,则会底部绘制图像,还允许传递
    image2D()函数的参数的列表,
    此列表的一个参数
    side表示将image2D()图置于何处位置。
    side = z-value, 表示将该图置于z轴value值位置处。
    side = "zmin"side = "zmax"分别将该图置于底部和顶部,默认置于底部。

  • contour, 为逻辑值,表示是否在绘图立方体中插入等高线, 如果TRUE, 则默认插入等高线图在底部,也可以通过contour()函数传递参数。
    同样存在位置参数
    sideside = "zmin"side = "zmax"分别将该图置于底部和顶部,默认置于底部。

  • panel.first, 表示指定一种变换函数,常常用于绘制背景网格和三维散点图的平滑处理。 该函数的其中一个参数应该是pmat矩阵变换。

  • along, 表示指定绘制ribbons图的方向,c(“x”, “y”, “xy”)其中之一,表示ribbons平行x轴,y轴或xy平面。

  • curtain, 为逻辑值,TRUE表示ribbon或persp将紧挨着panels。

  • space, 为数值,表示指定bar/ribbons之间的空白间隙量,
    对应
    hist3D(), 则介于[0, 0.9]之间。对于ribbon3D(), 则介于[0.1, 0.9]之间。
    也可以是2个长度的向量,分别表示x,y方向的空白间隙量。

  • bty, 表示指定box类型, 默认仅仅画背景panels, 只有当persp()中的box=TRUE时才有效。
    其它与
    perspbox() 函数中一致。bty = c(“b”, “b2”, “f”, “g”, “bl”, “bl2”, “u”, “n”)其中之一。

  • lighting, 逻辑值或列表指定,表示对曲面网格打光,
    FALSE则不打光,TRUE或list指定都会打光,则网格颜色可能变明亮,
    list必须用下面的颜色空间指定:
    ambient环境光, diffuse漫反射, specular镜面反射, exponent颜色数字, sr阳光反射指数, alpha透明度,

  • shade, 表示指定阴影指数,与persp()中一样。

  • ltheta, lphi, 表示指定打光方向,与persp()中一样。

  • inttype, 表示指定多边形网格的插值类型,每个网格的显示由4个角点的坐标和1个颜色决定,共3种插值类型:
    inttype = 1(默认)与persp()曲面一致,z值表示每个网格4个角点的z轴坐标。
    如果指定了colvar参数,则将其colvar值重新计算到每个网格的中间,所以colvar维度必须是(nx-1)(ny-1),
    且平均值取自源数据(nx和ny分别是x和y点的数量), 这将使颜色分布和阴影过渡更加平滑。
    inttype = 1时,colvar中的NA值将在均值计算期间被使用,这将使NA对应的网格区域变大。
    inttype = 3为另一种设置,除了NA值的处理不一样,
    其它跟
    inttype = 1一致,NA不会带入平均值计算过程中,这样会使NA对应的网格区域变小。
    inttype = 2设置表示另一种插值方法,当colvar参数被指定的时候,这种设置使用得很频繁。
    这种插值方法中,颜色过渡不会平滑处理。它假定z的值和colvar的值都定义在网格的中心的位置,
    为了对网格作色,x,y,z对应的panels将扩大。grid数量增大到(nx+1)*(ny+1)。
    当colvar被指定时,这将使曲面上的z数据比源数据过渡更加平滑。
    这种插值更加适用于颜色变量colvar存在NA值的情况,因为取平均值过程会增加NA对应的网格区域。

  • opaque.top, 为逻辑值,表示3D直方图中(设置alpha透明),bars顶面是否透明,TRUE则不透明,
    默认FALSE表示透明。

  • zmin, 表示3D直方图中,设置bars的底面位置,默认NULL表示底面将处在zmin位置上。

  • …, 其它绘图参数,与persp()函数中参数一致。包括:xlim, ylim, zlim, xlab, ylab, zlab,
    main, sub, r, d, scale, expand, box, axes, nticks, ticktype。
    还有
    perspbox()中一些参数:col.axis, col.panel,
    lwd.panel, col.grid, lwd,grid。
    还有公共参数: alpha设定绘图对象的透明度(从0到1),
    lty, lwd分别设置网格边线的线型和线宽(仅当border 不是NA)

  • 注意:xlim, ylim, zlim仅仅表示设定坐标轴的显示范围,
    超出xlim,ylim, zlim范围的图形对象也会被绘制出来。
    如果要设定绘制图形对象的范围,使用
    plotdev()函数。


3.2

 persp3D()

比较persp3Dpersp函数的参数:

persp3D (x = seq(0, 1, length.out = nrow(z)), y = seq(0, 1, length.out = ncol(z)), z, ..., colvar = z, phi = 40, theta = 40,col = NULL,  NAcol = "white", breaks = NULL,border = NA, facets = TRUE, colkey = NULL, resfac = 1,image = FALSE, contour = FALSE, panel.first = NULL,clim = NULL, clab = NULL, bty = "b", lighting = FALSE, shade = NA, ltheta = -135, lphi = 0,inttype = 1, curtain = FALSE, add = FALSE, plot = TRUE)persp(x = seq(0, 1, length.out = nrow(z)),y = seq(0, 1, length.out = ncol(z)),z, xlim = range(x), ylim = range(y),zlim = range(z, na.rm = TRUE),xlab = NULL, ylab = NULL, zlab = NULL,main = NULL, sub = NULL,theta = 0, phi = 15, r = sqrt(3), d = 1,scale = TRUE, expand = 1,col = "white", border = NULL, ltheta = -135, lphi = 0,shade = NA, box = TRUE, axes = TRUE, nticks = 5,ticktype = "simple", ...)


参数比较结果:

  • persp3D中的xlim, ylim, zlim, 不一样,仅仅用于指定坐标轴的显示范围,
    persp中需要覆盖住图形的范围。

  • persp3D中增加了颜色标度断点参数breaks, 以进行着色。

  • persp3D中增加了参数facets参数,表示是否显示网格面,可以不显示网格面,只显示网格线。

  • persp3D中增加了颜色参数和图例参数: colvar,NAcolcolkey

  • persp3D中增加了lighting参数(是否打光,打光类型),而persp中只有shade参数。

  • persp3D中增加了imagecontour参数,可以插入一个平面图。

  • persp3D中增加了resfac 参数,表示指定各个方向的分辨率因子。

  • persp3D中增加了inttype 参数,表示可以设置网格插值类型。

  • persp3D中增加了curtain 参数, 表示是否紧挨着panels。

  • persp3D中增加了图例相关的参数: clab图例标题内容, clim图例显示范围,能自动添加图例。

3.2.1 breaks参数及列表传参

persp3D(z = volcano, contour = list(side = "z", dDepth = 0.))设定等高线深度。

library(plot3D)# 设定主标题,图例标题, 设定标度断点以着色, 默认scale = TRUE表示3个坐标轴独立缩放
persp3D(z &#61; volcano, main &#61; "volcano", clab &#61; c("height", "m"), breaks &#61; seq(80,200, by &#61; 10)) # 设置颜色标度断点# expand参数z轴方向缩放&#xff0c;expand<1缩小&#xff0c;使用列表传递图例参数
persp3D(z &#61; volcano, x &#61; 1: nrow(volcano), y &#61; 1:ncol(volcano), # x, y比默认的数值大expand &#61; 0.3, main &#61; "volcano", facets &#61; FALSE, scale &#61; FALSE, # scale &#61; FALSE表示x,y比例不变clab &#61; "height, m", colkey &#61; list(side &#61; 1, length &#61; 0.5)) # 图例参数&#xff1a;side&#61;1底部&#xff0c;图例箱体缩短


640?wx_fmt&#61;png

640?wx_fmt&#61;png

3.2.2 facets参数和curtain参数

with函数参考用法1

&#xff08;http://trefoil.github.io/2013/10/15/rwithby.html&#xff09;
with函数参考用法2

&#xff08;https://zhuanlan.zhihu.com/p/25847796&#xff09;

library(plot3D)x <- seq(-pi, pi, by &#61; 0.2)
y <- seq(-pi, pi, by &#61; 0.3)
grid <- mesh(x, y)  # mesh函数创建一个2维或3维的grid绘图对象z <- with(grid, cos(x) * sin(y))  # 返回1个矩阵对象&#xff0c;值为cos(x) * sin(y) # 默认绘图
persp3D(z &#61; z, x &#61; x, y &#61; y)# facets&#61;FALSE,不显示网格面&#xff0c;只显示网格线&#xff0c;curtain &#61;
# TRUE表示图形外轮廓与box贴紧。
persp3D(z &#61; z, x &#61; x, y &#61; y, facets &#61; FALSE, curtain &#61; TRUE)


640?wx_fmt&#61;png

640?wx_fmt&#61;png

3.2.3 contour和image参数(插入平面图)

library(plot3D)x <- seq(1, nrow(volcano), by &#61; 3)
y <- seq(1, ncol(volcano), by &#61; 3)
Volcano <- volcano[x, y] # 抽取volcano中x行&#xff0c;y列对应的元素赋予Volcano,约抽取了1/3的数据# 插入等高线平面图&#xff0c;默认在zmin处插入&#xff0c;设定z轴显示范围
persp3D(z &#61; Volcano, contour &#61; TRUE, zlim&#61; c(-200, 200), image &#61; FALSE)


640?wx_fmt&#61;png

# 插入平面等高线图&#xff0c;插入等高线背景图&#xff0c;列表传参
persp3D(z &#61; Volcano, x &#61; x, y &#61; y, scale &#61; FALSE,  # scale&#61;FALSE表示x,y比例不变contour &#61; list(nlevels &#61; 20, col &#61; "blue"), # 设定等高线颜色为蓝色zlim &#61; c(-200, 200), expand &#61; 0.2, # 设定z轴显示范围&#xff0c;expand &#61; 0.2 表示z轴图形压缩image &#61; list(col &#61; alpha.col(col &#61; "magenta", # 给等高线图添加背景&#xff0c;col深浅与z轴相关alpha &#61; seq(from &#61; 0, to &#61; 1, len &#61; 100)))) #  


640?wx_fmt&#61;png

# 等高线同时插入到多个位置&#xff0c;自定义平面图位置&#xff0c;使用side参数&#xff0c;
persp3D(z &#61; Volcano, contour &#61; list(side &#61; c("zmin", "z", "350")), # 等高线插入3个位置&#xff0c;zlim &#61; c(-100, 400), phi &#61; 20, image &#61; list(side &#61; 350)) # 图太多了&#xff0c;拓展z轴范围


640?wx_fmt&#61;png

3.2.4 inttype和colvar参数

colvar颜色参数为与z维度一致的矩阵, 指定colvar参数后&#xff0c;图例就表现colvar值了&#xff0c;不在是z的值了。

library(plot3D)# 默认inttype &#61; 1
persp3D(z &#61; Volcano, shade &#61; 0.5, colkey &#61; FALSE)# 设定inttype &#61; 2, 在colvar存在NA(默认Z存在NA时)时&#xff0c;更准确
persp3D(z &#61; Volcano, inttype &#61; 2, shade &#61; 0.5, colkey &#61; FALSE)# 设定colvar参数## 创建数据
x <- y <- seq(0, 2 * pi, length.out &#61; 10)
z <- with(mesh(x, y), cos(x) * sin(y)) &#43; runif(100)  # runif生成100个随机分布随机数
cv <- matrix(0.5 * runif(100), nrow &#61; 10)  # 生成10*10矩阵## 绘图&#xff0c;colvar指定随机颜色矩阵&#xff0c; 图例展示colvar值了
persp3D(x, y, z, colvar &#61; cv)  #
persp3D(x, y, z, colvar &#61; cv, inttype &#61; 2)  # inttype&#61;2能更好的展示colvar变量的分布


640?wx_fmt&#61;png

640?wx_fmt&#61;png

640?wx_fmt&#61;png

640?wx_fmt&#61;png

3.2.5 inttype参数影响缺失值变化

library(plot3D)par(mfrow &#61; c(2, 2))# 创建数据
VV <- V2 <- volcano[10:15, 10:15] # 筛选地10到15行&#xff0c;10到15列的元素&#xff0c;6*6矩阵&#xff0c;并赋值给2个对象
V2[3:4, 3:4] <- NA # 更新矩阵元素&#xff0c;3到4行&#xff0c;3到4列更改为缺失值
V2[4, 5] <- NA # 4行5列对应元素更改为缺失值# 二维网格图&#xff0c;展示colvar矩阵中NA缺失值分布
image2D(V2, border &#61; "black")  # x对应矩阵的行&#xff0c;y对应矩阵的列# inttype &#61; 1插值后&#xff0c;z的维度减少1行1列&#xff0c;变成了5*5矩阵
persp3D(z &#61; VV, colvar &#61; V2, inttype &#61; 1, theta &#61; 0, # inttype &#61; 1插值后&#xff0c;缺失值增加&#xff0c;变成8个phi &#61; 20, border &#61; "black", main &#61; "inttype &#61; 1") # 添加主标题# inttype &#61; 2插值后&#xff0c;z的维度不变&#xff0c;缺失值数量及分布不变。
persp3D(z &#61; VV, colvar &#61; V2, inttype &#61; 2, theta &#61; 0, # inttype &#61;2插值后&#xff0c;缺失值数量及分布不变phi &#61; 20, border &#61; "black", main &#61; "inttype &#61; 2") # 添加主标题# inttype &#61; 3插值后&#xff0c;z的维度减少1行1列&#xff0c;但colvar缺失值减少
persp3D(z &#61; VV, colvar &#61; V2, inttype &#61; 3, theta &#61; 0,  # inttype &#61; 3插值后&#xff0c;缺失值减少&#xff0c;变成1个phi &#61; 20, border &#61; "black", main &#61; "inttype &#61; 3") # 添加主标题


640?wx_fmt&#61;png

3.2.6 panel.first及函数传参

panel.first参数用于指定box的panels类型&#xff0c;也可以使用函数在panels上添加绘制的图形对象。

library(plot3D)par(mfrow &#61; c(1, 1))# 构建一个包含绘图对象的函数&#xff0c;在后面panel.first参数中调用  
panelfirst <- function(trans) {zticks <- seq(100, 180, by &#61; 20) # 5个长度的向量len <- length(zticks) # len &#61; 5# 用trans3D新建2个空间转化矩阵XY0 <- trans3D(x &#61; rep(1, len), y &#61; rep(1, len), z &#61; zticks, # trans3D函数与trans3d作用一样&#xff0c;pmat &#61; trans)XY1 <- trans3D(x &#61; rep(1, len), y &#61; rep(61, len), z &#61; zticks,pmat &#61; trans)# 绘制第1个平面图&#xff0c;绘制几条虚线segments(XY0$x, XY0$y, XY1$x, XY1$y, lty &#61; 2) # R自带函数segments绘制虚线rm <- rowMeans(volcano) # 在z中列为y, 行为x          XY <- trans3D(x &#61; 1:87, y &#61; rep(ncol(volcano), 87), z &#61; rm, pmat &#61; trans)# 绘制第2个平面图&#xff0c;绘制1条曲线lines(XY, col &#61; "green", lwd &#61; 2)
}# 绘图&#xff0c;设置panel.first参数&#xff0c;绘制panels中的图形, 将persp3D产生的空间转化矩阵代入panelfirst的trans
# panels添加顺序安装绘制顺序
persp3D(z &#61; volcano, x &#61; 1:87, y &#61; 1: 61, scale &#61; FALSE, theta &#61; 10,expand &#61; 0.2, panel.first &#61; panelfirst, colkey &#61; FALSE)

640?wx_fmt&#61;png

3.2.7 col参数指定色板

library(plot3D)# 设定col为gg.col色板(ggplot2默认色板)
persp3D(z &#61; volcano, shade &#61; 0.3, col &#61; gg.col(100))  # 不指定colvar参数时&#xff0c;颜色与z坐标匹配  # lighting参数指定打光&#xff0c;光照类型还没搞懂怎样设置
persp3D(z &#61; volcano, lighting &#61; TRUE, lphi &#61; 90)# 自定义连续渐变色板
persp3D(z &#61; volcano, shade &#61; 0.3, col &#61; ramp.col(col &#61; c("cyan", "magenta"), n &#61; 102, alpha &#61; 0.5))# 设置颜色全部为灰蓝色&#xff0c;
persp3D(z &#61; volcano, col &#61; "lightblue", shade &#61; 0.3, bty &#61; "b2")persp3D(z &#61; volcano, col &#61; "grey", shade &#61; 0.3)


640?wx_fmt&#61;png

640?wx_fmt&#61;png

640?wx_fmt&#61;png

640?wx_fmt&#61;png

640?wx_fmt&#61;png

3.2.8 add参数添加图层

最后一个图层才设定plot &#61; TRUE

library(plot3D)clim <- range(volcano) # 绘制第一个图层&#xff0c;
persp3D(z &#61; volcano, zlim &#61; c(100, 600), clim &#61; clim, col &#61; ramp.col(col &#61; c("cyan", "magenta"), n &#61; 102, alpha &#61; 1),# clim 指定图例显示范围box &#61; FALSE, plot &#61; FALSE)# 绘制第2个图层&#xff0c;向z轴正向偏移200个单位, volcano设定等于原来的z轴
persp3D(z &#61; volcano &#43; 200, clim &#61; clim, colvar &#61; volcano, col &#61; ramp.col(col &#61; c("cyan", "magenta"), n &#61; 102, alpha &#61; 1), # add &#61; TRUE, colkey &#61; FALSE, plot &#61; FALSE)# 绘制第3个图层&#xff0c;向z轴正向偏移400个单位
persp3D(z &#61; volcano &#43; 400, clim &#61; clim, colvar &#61; volcano, col &#61; ramp.col(col &#61; c("cyan", "magenta"), n &#61; 102, alpha &#61; 1), add &#61; TRUE, colkey &#61; FALSE)    # 默认plot &#61; TRUE


640?wx_fmt&#61;png

3.3

ribbon3D()

ribbon3D()persp3D()比较&#xff1a;
* z与
persp3D()中的数据不同&#xff0c;为了不形成封闭的网格&#xff0c;必须对volcano数据集进行筛选行或筛选列。
* 通过设定
along参数指定方向条带方向&#xff0c;默认along &#61; x。 * 增加了space参数,设定条带之间的空白间隙量。默认space &#61; 0.4。

3.3.1 筛选数据集和along参数

  • volcano数据集列相当于y, 行相当于x。

  • 筛选列&#xff0c;y不连续&#xff0c; 条带沿x方向。默认along &#61; "x"

  • 筛选行&#xff0c;x不连续&#xff0c; 条带沿y方向。设定along &#61; "y"

  • 不筛选数据&#xff0c;则设定along &#61; "xy", 结果形成网状条带。

library(plot3D)# 默认条带沿x方向
V <- volcano[, seq(1, ncol(volcano), by &#61; 3)]  ## 筛选数据集&#xff0c;筛选列&#xff0c;间隔2个列取1列数据ribbon3D(z &#61; V, col &#61; ramp.col(col &#61; c("cyan", "magenta"), n &#61; 102, alpha &#61; 1),colkey &#61; list(width &#61; 0.5, length &#61; 0.5,  # 列表传递图例参数cex.axis &#61; 0.8, side &#61; 2), clab &#61; "m") # cex.axis坐标轴比例变为0.8倍


640?wx_fmt&#61;png

# 设定along &#61; "y"&#xff0c; 条带沿y方向&#xff0c; space &#61; 0.3减小条带间隙Vy <- volcano[seq(1, nrow(volcano), by &#61; 3), ] ## 筛选数据集&#xff0c;筛选行&#xff0c;间隔2个行取1行数据ribbon3D(z &#61; Vy, expand &#61; 0.3, space &#61; 0.3, along &#61; "y", # expand &#61; 0.3&#xff0c;沿z轴压缩col &#61; ramp.col(col &#61; c("cyan", "magenta"), n &#61; 102, alpha &#61; 1),colkey &#61; list(width &#61; 0.5, length &#61; 0.5, cex.axis &#61; 0.8))


640?wx_fmt&#61;png

# 不筛选数据&#xff0c;设定along &#61; "xy", 形成网状条带。
x <- seq(-pi, pi, by &#61; 0.2)
y <- seq(-pi, pi, by &#61; 0.3)
grid <- mesh(x, y)
z <- with(grid, cos(x) * sin(y))ribbon3D(z &#61; z, x &#61; x, y &#61; y, along &#61; "xy", space &#61; 0.3,col &#61; ramp.col(col &#61; c("cyan", "magenta"), n &#61; 102, alpha &#61; 1))


640?wx_fmt&#61;png

3.3.2 contour和image参数增加平面图

library(plot3D)x <- seq(1, nrow(volcano), by &#61; 3)  # 同时筛选数据
y <- seq(1, ncol(volcano), by &#61; 3)Volcano <- volcano[x, y]
ribbon3D(z &#61; Volcano, zlim &#61; c(-100, 200), col &#61; ramp.col(col &#61; c("cyan", "magenta"), n &#61; 102, alpha &#61; 1), contour &#61; TRUE, image &#61; TRUE)  # 默认image图形颜色与条带一致


640?wx_fmt&#61;png

3.4

hist3D()

hist3D()特点&#xff1a;

  • 同样有space参数&#xff0c;但默认space &#61; 0。

  • 增加了一个opaque.top参数&#xff0c;用于指定bar顶面是否透明(当设定alpha时)&#xff0c;默认opaque.top &#61; FALSE不透明。

require(plot3D)data(VADeaths) # 一个城市与农村不同年龄&#xff0c;不同性别人口数量数据集,
head(VADeaths) # 行相当于x即年龄分布。# bty &#61; "g"表示灰色背景panels和白色grid
hist3D(z &#61; VADeaths,scale &#61; FALSE, expand &#61; 0.01, bty &#61; "g", theta &#61; 290, phi &#61; 20, # expand &#61; 0.01,z轴方向压缩 col &#61; "green", border &#61; "magenta", shade &#61; 0.2, ltheta &#61; -290,space &#61; 0.3, ticktype &#61; "detailed", d &#61; 2) # 设定柱子间隙为0.3, d&#61;2>1降低透视强度


640?wx_fmt&#61;png

3.4.1 增加3维文字text3D()

library(plot3D)hist3D (x &#61; 1:5, y &#61; 1:4, z &#61; VADeaths,bty &#61; "g", phi &#61; 20,  theta &#61; -60,xlab &#61; NA, ylab &#61; NA, zlab &#61; "", main &#61; "VADeaths", # main增加主标题col &#61; "green", border &#61; "magenta", shade &#61; 0.8,ticktype &#61; "detailed", space &#61; 0.15, d &#61; 2)# 添加3维文字&#xff0c;给x轴增加刻度标签
text3D(x &#61; 1:5, y &#61; rep(-0.3, 5), z &#61; rep(3, 5), # y相同&#xff0c;在x轴上增加刻度标签labels &#61; rownames(VADeaths),add &#61; TRUE, adj &#61; 0)# 添加3维文字&#xff0c;给y轴增加刻度标签
text3D(x &#61; rep(0.5, 4),   y &#61; 1:4, z &#61; rep(0, 4), # x相同labels  &#61; colnames(VADeaths),add &#61; TRUE, adj &#61; 1)


640?wx_fmt&#61;png

3.4.2 opaque.top设定顶面非透明

必须用alpha参数设定bar透明度
alpha从0(全透明)到1(不透明)。

library(plot3D)data(VADeaths) # 一个城市与农村不同年龄&#xff0c;不同性别人口数量数据集,
head(VADeaths) # 行相当于x即年龄分布。# 设定图形透明度为0.3, opaque.top &#61; TRUE表示顶部不透明
hist3D(z &#61; VADeaths,scale &#61; FALSE, expand &#61; 0.01, bty &#61; "g", theta &#61; 290, phi &#61; 20, # expand &#61; 0.01,z轴方向压缩 col &#61; "green", border &#61; "magenta", shade &#61; 0.2, ltheta &#61; -290, alpha &#61; 0.3, opaque.top &#61; TRUE, space &#61; 0.3, ticktype &#61; "detailed", d &#61; 2) # 设定柱子间隙为0.3, d&#61;2>1降低透视强度


640?wx_fmt&#61;png

640?wx_fmt&#61;png

····

往期精彩&#xff1a;

  • R_插值_拟合_回归_样条

  • R_circlize包_和弦图&#xff08;一&#xff09;

  • R_circlize包_和弦图&#xff08;二&#xff09;

  • R_ggplot2基础&#xff08;一&#xff09;

  • R_ggplot2基础&#xff08;二&#xff09;

  • R_ggplot2基础&#xff08;三&#xff09;

  • R_ggplot2基础&#xff08;四&#xff09;

  • R_3D图(一)

····

640?wx_fmt&#61;gif


640?wx_fmt&#61;jpeg

公众号后台回复关键字即可学习

回复 爬虫            爬虫三大案例实战  
回复 
Python       1小时破冰入门

回复 数据挖掘     R语言入门及数据挖掘
回复 
人工智能     三个月入门人工智能
回复 数据分析师  数据分析师成长之路 
回复 机器学习      机器学习的商业应用
回复 数据科学      数据科学实战
回复 常用算法      常用数据挖掘算法



推荐阅读
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文介绍了使用Spark实现低配版高斯朴素贝叶斯模型的原因和原理。随着数据量的增大,单机上运行高斯朴素贝叶斯模型会变得很慢,因此考虑使用Spark来加速运行。然而,Spark的MLlib并没有实现高斯朴素贝叶斯模型,因此需要自己动手实现。文章还介绍了朴素贝叶斯的原理和公式,并对具有多个特征和类别的模型进行了讨论。最后,作者总结了实现低配版高斯朴素贝叶斯模型的步骤。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 本文介绍了Python字典视图对象的示例和用法。通过对示例代码的解释,展示了字典视图对象的基本操作和特点。字典视图对象可以通过迭代或转换为列表来获取字典的键或值。同时,字典视图对象也是动态的,可以反映字典的变化。通过学习字典视图对象的用法,可以更好地理解和处理字典数据。 ... [详细]
  • 我用Tkinter制作了一个图形用户界面,有两个主按钮:“开始”和“停止”。请您就如何使用“停止”按钮终止“开始”按钮为以下代码调用的已运行功能提供建议 ... [详细]
  • Thisworkcameoutofthediscussioninhttps://github.com/typesafehub/config/issues/272 ... [详细]
  • QuestionThereareatotalofncoursesyouhavetotake,labeledfrom0ton-1.Somecoursesmayhaveprerequi ... [详细]
author-avatar
书友58737112
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有