当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。