當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R panel.cloud 雲默認麵板函數


R語言 panel.cloud 位於 lattice 包(package)。

說明

默認麵板函數控製cloudwireframe 顯示。

用法

panel.cloud(x, y, subscripts, z,
            groups = NULL,
            perspective = TRUE,
            distance = if (perspective) 0.2 else 0, 
            xlim, ylim, zlim,
            panel.3d.cloud = "panel.3dscatter",
            panel.3d.wireframe = "panel.3dwire",
            screen = list(z = 40, x = -60),
            R.mat = diag(4), aspect = c(1, 1),
            par.box = NULL,
            xlab, ylab, zlab,
            xlab.default, ylab.default, zlab.default,
            scales.3d,
            proportion = 0.6,
            wireframe = FALSE,
            scpos,
            ...,
            at,
            identifier = "cloud")
panel.wireframe(...)
panel.3dscatter(x, y, z, rot.mat, distance,
                groups, type = "p",
                xlim, ylim, zlim,
                xlim.scaled, ylim.scaled, zlim.scaled,
                zero.scaled,
                col, col.point, col.line,
                lty, lwd, cex, pch, fill,
                cross, ..., .scale = FALSE, subscripts,
                identifier = "3dscatter")
panel.3dwire(x, y, z, rot.mat = diag(4), distance,
             shade = FALSE,
             shade.colors.palette = trellis.par.get("shade.colors")$palette,
             light.source = c(0, 0, 1000),
             xlim, ylim, zlim, 
             xlim.scaled,
             ylim.scaled,
             zlim.scaled,
             col = if (shade) "transparent" else "black",
             lty = 1, lwd = 1,
             alpha,
             col.groups = superpose.polygon$col,
             polynum = 100,
             ...,
             .scale = FALSE,
             drape = FALSE,
             at,
             col.regions = regions$col,
             alpha.regions = regions$alpha,
             identifier = "3dwire")
makeShadePalette(col.regions, ..., min = 0.05, pref = 0.75)

參數

x , y , z

表示要顯示的數據的數字(或可能的因子)向量。解釋取決於上下文。對於panel.cloud,這些本質上與傳遞到高級圖的數據相同(除非formula 是矩陣,則生成適當的xy 向量)。當它們傳遞給 panel.3dscatterpanel.3dwire 時,它們已被適當地子集化(使用 subscripts )並縮放(位於邊界框內,通常是 [-0.5, 0.5] 立方體)。

此外,對於panel.3dwirexyz短並且表示定義矩形網格的排序位置。同樣在這種情況下,如果顯示器被分組,則z可以是矩陣,其中每一列代表一個表麵。

panel.cloud (從 wireframe 調用)和 panel.3dwirexyz 中,當它們表示在 2-D 上參數化的 3-D 表麵時,它們也可以是矩陣(相同維度) D 網格。

subscripts

索引指定要繪製的點。對於每個麵板,相同的 xyz 值(代表整個數據)被傳遞到 panel.cloudsubscripts 指定用於特定麵板的行子集。

groups

分組變量的規範,從高級函數向下傳遞。

perspective

邏輯,是否繪製透視圖。將其設置為FALSE相當於將distance設置為0

distance

0 到 1 之間的數字,控製透視量。視點距原點的距離(在變換後的坐標係中)為 1 / distancecloud 的文檔對此進行了更詳細的說明

screen

確定繪製數據之前要應用於數據的旋轉順序的列表。初始位置從沿正 z 軸的觀察點開始,x 軸和 y 軸位於通常位置。列表中的每個組件應命名為 "x""y""z" 之一(允許重複),其值指示繞該軸的旋轉量(以度為單位)。

R.mat

齊次坐標中的初始旋轉矩陣,在 screen 進一步旋轉視圖之前應用於數據。

par.box

box的圖形參數,即col、lty和lwd。默認從參數 box.3d 獲取。

xlim , ylim , zlim

各個軸的限製。與其他點陣函數一樣,它們每個都可以是數字 2 向量或指示因子水平的字符向量。

panel.3d.cloud , panel.3d.wireframe

cloudwireframe 中繪製繪圖的數據驅動部分(而不是邊界框和比例)的函數。在繪製邊界框的‘back’之後、繪製‘front’之前調用此函數。

任何用戶定義的自定義顯示都可能想要更改這些函數。目的是向此函數傳遞盡可能多的有用信息(並非默認使用所有信息)。特別是,這些函數可以期望名為 xlimylimzlim 的參數,它們給出原始數據比例中的邊界框範圍,以及 xlim.scaledylim.scaledzlim.scaled 給出的邊界框範圍變換後的尺度。可根據要求考慮更多參數。

aspect

方麵如cloud

xlab , ylab , zlab

標簽,必須是列表。通常,用戶不會操縱這些,而是直接通過 cloud 的參數來控製它們。

xlab.default

供內部使用

ylab.default

供內部使用

zlab.default

供內部使用

scales.3d

定義尺度的列表

proportion

數值標量,給出箭頭長度與邊的比例

scpos

包含三個分量 x、y 和 z(每個分量都是標量整數)的列表,說明應繪製立方體 12 個邊中的哪一個刻度。默認值應該沒問題。有效值為 x:1、3、9、11; y: 8, 5, 7, 6 和 z: 4, 2, 10, 12。(請參閱panel.cloud源代碼中的注釋以查看此枚舉的詳細信息。)

wireframe

邏輯,指示這是否是線框圖

drape

邏輯上,麵是否將按高度著色,方式類似於 levelplot 。如果是 shade=TRUE ,則忽略這一點。

at

wireframe 中的 drape = TRUE 時,定義表麵的麵將根據(平均)高度的函數進行著色,類似於 levelplotat 是一個數值向量,給出沿 z 軸顏色變化的斷點。

col.regions

drape = TRUE 時與 at 結合使用的顏色向量。

在可用於定義著色調色板(見下文)的 makeShadePalette 中,col.regions 是定義基色(作為高度的函數)的初始向量,然後根據輻照度和反射率進行調整。

alpha.regions

drape = TRUE 時控製透明度的數值標量。

rot.mat

齊次坐標中的 4x4 變換矩陣。這給出了將 screenR.mat 參數組合到 panel.cloud 的旋轉矩陣

type

字符向量,指定雲圖的類型。可以包含 "p""l""h""b" 中的一項或多項。 "p""l"分別表示‘points’和‘lines’,"b"表示‘both’。 "h" 代表 ‘histogram’,並導致從每個點到 X-Y 平麵(即表示 z = 0 的平麵)或下(或上)邊界框麵(以較接近者為準)繪製一條線。

xlim.scaled , ylim.scaled , zlim.scaled

軸限製(縮放到邊界框後)

zero.scaled

原始數據比例中 X-Y 平麵的 z 軸位置(縮放到邊界框後),當 type = "h" 時,將從每個點開始放置線條(如果在範圍內)

cross

邏輯,如果 pch = "+" 則默認為 TRUEpanel.3dscatter 可以通過 3d ‘cross’ 來表示每個點(查看示例比通過說明更容易理解)。這與通常的 pch 參數不同,反映了點的深度和軸的方向。該參數指示是否將使用該函數。

這很有用,原因有兩個。可以將其設置為FALSE,以使用"+"作為常規意義上的繪圖字符。它還可用於在分組顯示中強製使用此函數。

shade

邏輯,指示是否使用具有單一光源的照明模型對表麵進行著色

shade.colors.palette

一個函數(或函數的名稱),用於在使用著色時計算麵的顏色。該函數可以獲得三個信息:第一,入射光線與表麵法線之間夾角的餘弦(表示透視);第二,反射光線與觀察方向之間角度的一半的餘弦(對於非朗伯表麵有用);第三,該特定麵相對於總繪圖 z 軸限製的縮放(平均)高度。

所有三個數字都應介於 0 和 1 之間。shade.colors.palette 函數應返回有效顏色。默認函數是使用 makeShadePalette 從網格設置中獲取的。

min

數字,介於 0 和 1 之間,給出 makeShadePalette 中的最小飽和度

pref

數字,給出在用於‘darken’顏色之前應用於反射率值的功率。

light.source

表示光源(在笛卡爾坐標中)的 3 向量。這是相對於 (0, 0, 1/距離)(沿正 z 軸)的觀察點而言的,請記住所有觀測值都在 [-0.5, 0.5] 立方體內

polynum

四邊形麵一次以 polynum 為批次進行繪製。一次繪製太少會增加對底層 grid.polygon 函數的調用總數,從而影響速度。嘗試一次繪製太多可能會不必要地占用大量內存。這個論點控製著權衡。

col.groups

不同群體的顏色

col , col.point , col.line , lty , lwd , cex , pch , fill , alpha

圖形參數。一些其他參數(例如線寬的 lex)也可以通過 ... 參數傳遞。

...

其他參數,在適當的時候傳遞

.scale

邏輯標誌,指示 xyz 是否應假定為原始數據比例,並因此在繪製之前進行縮放。 xyz 通常已經縮放。然而,設置.scale=TRUE可能有助於在用戶提供的麵板函數中調用panel.3dscatterpanel.3dwire

identifier

附加到由此麵板函數創建的 grobs 名稱之前的字符串。

細節

這些函數共同負責 cloudwireframe 中每個麵板內繪製的內容。 panel.wireframepanel.cloud 的包裝器,它執行實際工作。

panel.cloud 負責繪製不依賴於數據的內容,即邊界框、箭頭/比例等。在某些時候,根據 wireframe 是否為 TRUE,它會調用 panel.3d.wireframepanel.3d.cloud ,繪製繪圖的數據驅動部分。

這兩個函數接受的參數是不同的,因為它們的目的本質上不同。對於雲來說,數據是非結構化的,xyz都傳遞給panel.3d.cloud函數。另一方麵,對於線框,xy 是具有唯一值的遞增向量,定義矩形網格。 z 必須是具有 length(x) * length(y) 行、列數與組數相同的矩陣。

panel.3dscatter 是默認的panel.3d.cloud 函數。它有一個類似於 panel.xyplottype 參數,並支持分組顯示。它試圖遵循深度順序,即,靠近相機的點和線稍後繪製,覆蓋更遠的點和線。 (當然,線段沒有絕對的排序,因此使用了臨時排序。沒有隱藏點刪除。)

panel.3dwire 是默認的panel.3d.wireframe 函數。它會一一計算與各個麵相對應的多邊形,但會等到收集到polynum 麵的信息後,一次性將它們全部繪製出來。這避免了重複繪製 grid.polygon 的開銷,從而大大加快了渲染速度。如果是 shade = TRUE ,則這些嘗試將表麵著色為從 light.source 光源照射的表麵。 palette.shade 是一個提供默認著色顏色的簡單函數

如果在調用 wireframegroups 為非空,則會繪製多個曲麵,但是該算法不夠複雜,無法正確渲染相交曲麵。

例子

wireframe(volcano, shade = TRUE,
          shade.colors.palette = makeShadePalette(hcl.colors(10, "Inferno"),
                                                  pref = 0.2))
wireframe(volcano, shade = TRUE,
          shade.colors.palette = makeShadePalette(hcl.colors(10, "Dark Mint"),
                                                  pref = 0.2))
wireframe(volcano, shade = TRUE,
          shade.colors.palette = makeShadePalette(hcl.colors(10, "Harmonic"),
                                                  pref = 0.2))

作者

Deepayan Sarkar Deepayan.Sarkar@R-project.org

也可以看看

cloud , utilities.3d

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Default Panel Function for cloud。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。