persp
位於 graphics
包(package)。 說明
此函數在 x-y 平麵上繪製曲麵的透視圖。 persp
是一個通用函數。
用法
persp(x, ...)
## Default S3 method:
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", ...)
參數
x , y |
測量 |
z |
包含要繪製的值的矩陣(允許 |
xlim , ylim , zlim |
x、y 和z-limits。應選擇這些以覆蓋表麵值的範圍:請參閱“詳細信息”。 |
xlab , ylab , zlab |
軸的標題。注意:這些必須是字符串;不接受表達式。數字將被強製轉換為字符串。 |
main , sub |
主標題和副標題,如 |
theta , phi |
定義觀察方向的角度。 |
r |
視點距繪圖框中心的距離。 |
d |
可用於改變透視變換強度的值。 |
scale |
在查看之前,定義表麵的點的 x、y 和 z 坐標將轉換為區間 [0,1]。如果 |
expand |
應用於 |
col |
表麵刻麵的顏色。透明顏色將被忽略。這將被回收到 方麵。 |
border |
圍繞表麵刻麵繪製的線條的顏色。默認值 |
ltheta , lphi |
如果為 |
shade |
表麵小平麵處的陰影計算為 |
box |
是否應該顯示表麵的邊界框。默認為 |
axes |
應在框中添加刻度線和標簽。默認為 |
ticktype |
字符: |
nticks |
在軸上繪製的刻度線的(近似)數量。如果 |
... |
額外的graphical parameters(參見 |
細節
通過首先使用提供的或根據數據範圍計算的限製將 (x,y,z) 坐標轉換為區間 [0,1] 來生成繪圖。然後通過從 theta
和 phi
定義的方向查看原點來查看表麵。如果theta
和phi
均為零,則觀察方向直接沿負 y 軸向下。更改 theta
將改變方位角並更改 phi
餘緯度。
繪圖完成後會調用一個名為"persp"
(請參閱setHook
)的鉤子,該鉤子在測試代碼中用於注釋繪圖頁麵。調用鉤子函數時不帶參數。
請注意,persp
將 z
矩陣解釋為 f(x[i], y[j])
值表,因此 x 軸對應於行號,y 軸對應於列號,第 1 列位於底部,因此采用標準旋轉角度,矩陣的左上角顯示在左側,最靠近用戶。
ticktype = "detailed"
的軸標簽和注釋的大小和字體分別由圖形參數"cex.lab"
/"font.lab"
和"cex.axis"
/"font.axis"
控製。
邊界框是用背向觀察者的麵的邊(因此位於框的背麵)繪製的,並用實線和虛線繪製,其他邊位於表麵的頂部。此操作(以及軸的繪製)假設選擇了軸限製,以便表麵位於框內,如果情況並非如此,該函數將發出警告。
值
persp()
返回觀看變換矩陣,例如 VT
,一個 矩陣,適合使用齊次 4D 坐標 將 3D 坐標 投影到 2D 平麵。它可用於通過 lines()
或 points()
使用函數 trans3d()
在 3D 繪圖上疊加其他圖形元素。
例子
require(grDevices) # for trans3d
## More examples in demo(persp) !!
## -----------
# (1) The Obligatory Mathematical surface.
# Rotated sinc function.
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)
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 )", cex.axis = 0.8
) -> res
round(res, 3)
# (2) Add to existing persp plot - using trans3d() :
xE <- c(-10,10); xy <- expand.grid(xE, xE)
points(trans3d(xy[,1], xy[,2], z = 6, pmat = res), col = 2, pch = 16)
lines (trans3d(x, y = 10, z = 6 + sin(x), pmat = res), col = 3)
phi <- seq(0, 2*pi, length.out = 201)
r1 <- 7.725 # radius of 2nd maximum
xr <- r1 * cos(phi)
yr <- r1 * sin(phi)
lines(trans3d(xr,yr, f(xr,yr), res), col = "pink", lwd = 2)
## (no hidden lines)
# (3) Visualizing a simple DEM model
z <- 2 * volcano # Exaggerate the relief
x <- 10 * (1:nrow(z)) # 10 meter spacing (S to N)
y <- 10 * (1:ncol(z)) # 10 meter spacing (E to W)
## Don't draw the grid lines : border = NA
par(bg = "slategray")
persp(x, y, z, theta = 135, phi = 30, col = "green3", scale = FALSE,
ltheta = -120, shade = 0.75, border = NA, box = FALSE)
# (4) Surface colours corresponding to z-values
par(bg = "white")
x <- seq(-1.95, 1.95, length.out = 30)
y <- seq(-1.95, 1.95, length.out = 35)
z <- outer(x, y, function(a, b) a*b^2)
nrz <- nrow(z)
ncz <- ncol(z)
# Create a function interpolating colors in the range of specified colors
jet.colors <- colorRampPalette( c("blue", "green") )
# Generate the desired number of colors from this palette
nbcol <- 100
color <- jet.colors(nbcol)
# Compute the z-value at the facet centres
zfacet <- z[-1, -1] + z[-1, -ncz] + z[-nrz, -1] + z[-nrz, -ncz]
# Recode facet z-values into color indices
facetcol <- cut(zfacet, nbcol)
persp(x, y, z, col = color[facetcol], phi = 30, theta = -30)
par(op)
參考
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
也可以看看
可旋轉的 3D 圖可以通過包 rgl
生成:生成靜態透視圖的其他方法可以在包 lattice
和 scatterplot3d
中找到。
相關用法
- R plot.histogram 繪製直方圖
- R points 向繪圖添加點
- R pairs 散點圖矩陣
- R plot.raster 繪製光柵圖像
- R plot.factor 繪製因子變量
- R plot.table 表對象的繪圖方法
- R polygon 多邊形繪製
- R plot.default 默認散點圖函數
- R plot.window 設置圖形窗口的世界坐標
- R plot.xy 基本內部繪圖函數
- R pie 餅狀圖
- R par 設置或查詢圖形參數
- R polypath 路徑繪製
- R panel.smooth 簡單麵板圖
- R plot.design 繪製設計或模型的單變量效應
- R plot.formula 散點圖的公式表示法
- R plot.data.frame DataFrame 的繪圖方法
- R legend 將圖例添加到繪圖中
- R barplot 條形圖
- R stem 莖葉圖
- R mtext 將文本寫入繪圖的邊距
- R arrows 將箭頭添加到繪圖中
- R contour 顯示輪廓
- R stars 星圖(蜘蛛圖/雷達圖)和線段圖
- R box 在地塊周圍畫一個方框
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Perspective Plots。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。