作者:李誉辉
四川大学在读研究生
前言
这篇是plot3D包绘图系列之三,前一篇请戳:R_3D图(二),这一章节主要聚焦三维图的制作。做教程狠费精力的,别忘了点赞和转发。谢谢。
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()
函数传递参数。
同样存在位置参数side
, side = "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()
比较persp3D
与persp
函数的参数:
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
,NAcol
, colkey
。
persp3D
中增加了lighting
参数(是否打光,打光类型),而persp
中只有shade
参数。
persp3D
中增加了image
和contour
参数,可以插入一个平面图。
persp3D
中增加了resfac
参数,表示指定各个方向的分辨率因子。
persp3D
中增加了inttype
参数,表示可以设置网格插值类型。
persp3D
中增加了curtain
参数, 表示是否紧挨着panels。
persp3D
中增加了图例相关的参数: clab
图例标题内容, clim
图例显示范围,能自动添加图例。
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;图例箱体缩短
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)
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)
# 插入平面等高线图&#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)))) #
# 等高线同时插入到多个位置&#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轴范围
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变量的分布
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") # 添加主标题
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)
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)
最后一个图层才设定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
3.3
ribbon3D()
ribbon3D()
与persp3D()
比较&#xff1a;
* z与persp3D()
中的数据不同&#xff0c;为了不形成封闭的网格&#xff0c;必须对volcano
数据集进行筛选行或筛选列。
* 通过设定along
参数指定方向条带方向&#xff0c;默认along &#61; x。 * 增加了space
参数,设定条带之间的空白间隙量。默认space &#61; 0.4。
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倍
# 设定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))
# 不筛选数据&#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))
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图形颜色与条带一致
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降低透视强度
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)
必须用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降低透视强度
····
往期精彩&#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图(一)
····
公众号后台回复关键字即可学习
回复 爬虫 爬虫三大案例实战
回复 Python 1小时破冰入门回复 数据挖掘 R语言入门及数据挖掘
回复 人工智能 三个月入门人工智能
回复 数据分析师 数据分析师成长之路
回复 机器学习 机器学习的商业应用
回复 数据科学 数据科学实战
回复 常用算法 常用数据挖掘算法