ggplot2作图详解解在我的微博中可看到。那里有作图过程和图例。

查看: 589|回复: 0
VRay Adv作图过程详解
主题帖子积分
超级会员, 积分 1746, 距离下一级还需 1254 积分
超级会员, 积分 1746, 距离下一级还需 1254 积分
马上注册,享用更多功能,更好地浏览和下载本站资源。
才可以下载或查看,没有帐号?
301IP253W.jpg (26.31 KB, 下载次数: 0)
00:17 上传
020U20a331.jpg (49.25 KB, 下载次数: 0)
00:17 上传
301IQ33922.jpg (28.42 KB, 下载次数: 0)
00:17 上传
020U22H322.jpg (40.97 KB, 下载次数: 0)
00:17 上传
301IQ930V.jpg (23.74 KB, 下载次数: 0)
00:17 上传
020U24S215.jpg (32.71 KB, 下载次数: 0)
00:17 上传
020U3212A5.jpg (42.16 KB, 下载次数: 0)
00:17 上传
020U34L102.jpg (48.09 KB, 下载次数: 0)
00:17 上传
020U3592501.jpg (24.42 KB, 下载次数: 0)
00:17 上传
020U4122934.jpg (26.83 KB, 下载次数: 0)
00:17 上传
现在效果各位兄台也都过目了,现在我就斗胆和大家分享一下我的做图经验。在此次教程中,我将会以最简洁的方式向大家说明关键的步骤。现在开始喽
1、首先,在做图之前应把准备工作做得充分一些,先将尺寸设置完成。不要马虎,不要等到图做的差不多了,才想起来尺寸还没有设置,那样你之前的做的就是无用功了,谨记。
(先设置单位和选择渲染器),①进入Customize/Units Setup/Metric,选中Millimeters(㎜),然后单击System Unite Setup, 同样选中Millimeters,单位设置统一完成了。②还有就是要选择咱们要使用的渲染器,当然是VrayAdv 1.49.03了,位置如图。
301J34125Y.jpg (30.06 KB, 下载次数: 0)
00:17 上传
301J35D000.jpg (31.04 KB, 下载次数: 0)
00:17 上传
2、现在单位和渲染器都设置完成了,该开始盖房子了,先把大的确定下来,小的就可以往里加了。建立一个长宽高为4600㎜ * 4400㎜ * 3000㎜的立方体作为场景,然后在该物体上右键单击转换为可编辑多边形(poly)。在这里我为什么会选择poly而不是Mesh呢,因为poly功能比较强大些,使用起来更易上手,我不建议大家一味的盲从,可以自己可以试一下,就会明白其中的原由了,你的认识也就进一步提高了。
301J4221393.jpg (21.57 KB, 下载次数: 0)
00:17 上传
3、进入poly中的最后一个层级Element(元素),单击Flip(翻转),将本来只能看见外部的盒子显示为可以看见内部,法线反转,发现可以看见盒子的内部了,而不是外部了,便于查看和操作。
301J44a000.jpg (18.25 KB, 下载次数: 1)
00:17 上传
4、进入面级别(Polygon),将作为窗户的一侧的墙选中并删除(我一般习惯将窗户面的墙重新自己做一遍,认为这样做比较简单快捷)。
301J51AB7.jpg (26.96 KB, 下载次数: 0)
00:17 上传
5、现在设置三维捕捉。在其图标上右键,会弹出一对话框,并选择如下3个选项,分别是捕捉点、中点、终点,然后将其余标签中的选项全部勾选。
301J54231K.jpg (36.49 KB, 下载次数: 0)
00:17 上传
6、然后将视图切换到其中一个视图中,用面(Plane)进行三维捕捉,将面片的可视面朝向屋内侧,调整横纵向的线段数。然后在该物体上右键,单击转换为可编辑多边形,进入点级别(Vertex),调整点的位置,以适合作窗口。然后再进入面级别(Polygon),利用拉伸(Extrude),数值自定,将2个窗口拉伸成形。然后将图中2个最大的面删除(红色部分),为以后布光做准备,步骤如图。
301J6322J1.jpg (24.86 KB, 下载次数: 0)
00:17 上传
7、窗口已有,需加窗框,还是用到三维捕捉。将视图切换到其中一个平面的视图中,用二维线段中的矩形线框(Rectangle)进行三维捕捉。添加窗框横条并合并,完成窗框(红色部分为镂空)。
301JA4a12.jpg (31.53 KB, 下载次数: 0)
00:17 上传
8、至于窗户对面的门和临侧的门都是用二维线(Line)编辑并在修改器中添加拉伸命令完成的,这里就不再复述了。门和门所在的墙面的拉缝是用面(Plane)进行创造的,调整横纵向的线段数,然后在该物体上右键,单击转换为可编辑多边形,进入点级别(V),调整点的位置,然后再进入面级别(P),利用拉伸(Extrude),数值自定,就可完成。如果对墙面的修改不是很大的话,可以选择用可编辑多边形中的面级别(P)中的Detach(分离)来做:选择要分离的面,单击 Detach(分离),按ok即可,此时被分离出来的面是单独存在的,并可以单独进行编辑操作。
301JHLS5.jpg (22.12 KB, 下载次数: 0)
00:17 上传
9、现在门窗都已完毕,开始制作地板并给贴图坐标,上面我提到过Detach(分离),现在就来了解一下它的操作步骤。首先,进入立方体的面级别(P),把用于地板的面选中,然后选择Detach(分离),按ok。此时地板就被单独的分离开来,这样比较方便我们的编辑和操作。先给这个面添加个UVW Mapping(贴图坐标),记住是在修改器中添加的(图中有步骤)。在其中我们选择Plana(平面贴图方式),以此向下的是圆柱体,圆形等贴图方式。在选择了Plana方式后,会发现物体上有个橘色的平面线框,这个就是贴图控制线框,它可以显示你的贴图会以多大尺寸来显示,也可输入数值,因为我们的方式是平面的,所以高度参数是不可编辑的。
301JK54207.jpg (21.19 KB, 下载次数: 0)
00:17 上传
10、现在我们把门和窗框也都加入UVW Mapping(贴图坐标)。因为门和窗框都是立体的,有高度和深度的,所以需要添加Box(立方体贴图方式)。然后调整其大小即可,数值仅供参考。
301JQUU8.jpg (26.45 KB, 下载次数: 0)
00:17 上传
11、在这里我需要说一下,作为效果图制作的话,贴图方式最常用的也就是平面(例如地板、挂画等)和立方体(门、窗、桌子、书等)还有圆柱体(花瓶、茶杯等)。还有就是调节贴图尺寸,①可以在输入框内输入数值或是按后边的上下箭头,也可以在②这里用缩放工具进行拖拽的,将鼠标放置在任一个坐标轴上进行拖拽即可,③为缩放工具的位置,如图。
301JT32J7.jpg (26.32 KB, 下载次数: 0)
00:17 上传
12、现在贴图和基本的模型已讲完,只需多加练习即可,非常容易的。现在开始灯光环节。首先从外侧的主光源开始,就是靠它才能出彩呢。先建立一个VrayLight,将Type改为Sphere,颜色调成接近阳光的色彩,我这里给的是(212,159。46)。Mul=2315,该数值的大小决定阳光的强度,需要不断的测试才能校准。下面的半径=10911,根据做图的经验调节,可认为是能照射到的范围,勾选Invisib(此项是在渲染时不显示该光本身),在最下的细分为8(数值越高,效果越好,同时也要付大量时间作为代价)。
301J9152963.jpg (19.97 KB, 下载次数: 0)
00:17 上传
13、现在看一下这个主光源的放置位置,①尽量放得远些,②或者数值调低,要不就会爆,顶视图中的红色横线代表窗户的垂直位置。
301J943O10.jpg (17.94 KB, 下载次数: 0)
00:17 上传
14、现在来布置一下窗框附近的射入光,此光是补光,它的大小要根据窗口的大小而定。一般来说,只要能够覆盖住窗口即可,但要和窗口保持一定的距离,避免窗口部分过亮,影响效果。至于数值也是要经过测试得出的,图做的多了,有时手就特有准,一下子就OK了。还有就是颜色,最好是冷暖有所对比较好,这样会有丰富的、细微的变化。在图中可看出我建立了2个VrayLight,①VrayLight02、②VrayLight03。2个光稍有区别,那是因为一个是主场景的光,一是辅助场景的光。但是颜色都是一样的偏冷(144 187 207),因为太阳光是暖色的。强度当然是VrayLight03稍强些,勾选Invisib(不可见)。细分:VrayLight03为16,因为是照射主要场景的,提高细分可以将效果提升。还有就是因为VrayLight03离场景很近,是直接体现效果的,VrayLight 02保持默认的8即可。
301K01S362.jpg (35.33 KB, 下载次数: 0)
00:17 上传
15、其实光对于布光的方法,只要下工夫,不久就会成长起来。在效果图中最重要的是材质和灯光的调节。在咱们这个场景里就需要3个光,现已布置就绪,下面看一下材质方面的东东。Vray包括2种材质类型:VrayMtl和VrayMtlWrapper,&&VrayMtl是Vray真正的材质类型,而VrayMtlWrapper只是个包裹器。其中被包裹的是3D中的默认材质,只是在其上加了个Vray控制参数而已,我通常情况下都用VrayMtl,个人习惯。
301K03555C.jpg (36.17 KB, 下载次数: 0)
00:17 上传
16、首先是如何选择VrayMtl和VrayMtlWrapper。单击Standard,弹出Material/Map Brower对话框,然后选择你要使用的VR材质类型。现在以VrayMtl为例,进行讲解,对于VrayMtl来说,最主要的参数集中在前4个横条上,尤其是第一个横条尤为重要。Basic P...(基本参数),BRDF(控制高光反射选项),Options(包括反射、折射的相关开关操作和双面等),Maps(常见的贴图选项,与3D默认的贴图选项是一样的),其下依次是控制反射和折射的参数值。
  现在来看下Basic P...(基本参数)中的各个选项,其中分了4个区,分别是漫反射,反射,折射,半透明。Diffuse(漫反射色,控制物体表面受光的颜色)。Refl(反射,是按照深浅来起作用的,黑色为无反射效果,在有反射的情况下,渲染时间会有所增加) ,在反射中有个Fresnel(菲涅尔反射),勾选后,物体侧面的反射明显,中间弱,比较适合玻璃和瓷器。&&High gl...(高光模糊,值越低就越模糊,必须在有灯光的场景中才有效),比较适合金属和木材质(在效果图①中,放电脑的小木桌子就是应用了高光模糊)。Refl gl... (反射模糊,控制反射的清晰程度的,值越低就越模糊)。Subdivs(细分,控制反射模糊的细腻程度,值越低杂点越多)。Max depth(最大反射次数)。折射区和反射区的选项几乎相同,可按照反射的相关说明进行操作。
301K0556422.jpg (50.3 KB, 下载次数: 0)
00:17 上传
17、我们已经对VrayMtl有所了解了,现在以实际调节材质的方法来进一步认识它。首先我们先来调地板的数值,它的参数如下。在给木制的物体赋予材质的时候,首先给个贴图,然后将其中的模糊选项调到 0.1,这样显示的贴图会更清晰,纹理显示也更好。同样,复制给凹凸贴图一个,选择关联。接下来是反射,对于木制的物体,通常反射都不是很明显的,会有稍许的模糊,所以反射的有些即可。反射模糊一般我会给0.8到0.85之间(当然了,这不是绝对的),细分这里给8足矣,有时候我会给地板12的细分(前提是场景的物体不能太多,还有就是反射模糊的物体也不能太多的情况下)。还有最大反射深度我一般不会改的,即使改也是调低,因为木制物体一般都会给模糊反射的。所以看不出反射了多少次,木制物体的调节基本上就这些了,还有一些更细的调节还要靠慢慢的研究才能得到。
18、下面看下我的材质调节结果,希望从中可以得到些许提示。只列举部分比较重要的,能出彩的。首先是椅子的灰布料材质的调节。参数是我直接调用的,首先是布的颜色,因为布本身的质感并不强烈,所以HG=0.55,RG=0.6。至于细分依个人习惯而定,没必要给过高的数值,控制在10~20就可以了。& &
301K1292D6.jpg (50.73 KB, 下载次数: 0)
00:17 上传
19、这个是木质。先给个自己认为比较理想的木头贴图,然后其下有个Blur,将其值调低,可以让贴图更加清晰,数值为0.5左右即可。在这里我的木头也是给了个模糊高光的,最后别忘了给个凹凸贴图,数值不易太高,根据场景需要而定。
301K2049395.jpg (46.47 KB, 下载次数: 0)
00:17 上传
20、这个是陶瓷的材质。先确定其颜色,或给个贴图什么的。在这里我是直接调用模型的材质,没有进行加工,因为效果已经很好了。在这里可以看到反射模糊只是稍微调了下,因为是反光比较透彻的物体,高光模糊上也是如此。
301K235N57.jpg (43.3 KB, 下载次数: 0)
00:17 上传
21、其实调节材质就是个熟悉和累积的过程,多练多调就OK了。需要完全掌握和了解的地方,有些是带扩展栏的,还有些是需要知道什么时候用,什么时候不用的,会给你的渲染带来很多方便的。火星这方面的教程不在少数,可以进行参考。
22、下面我对圈画的地方进行一下说明,可能语言比较平实或有不正的地方,请各位纠正。首先看到的是我们所使用的Vray的版本号。
301K3122Z4.jpg (31.16 KB, 下载次数: 0)
00:17 上传
23、这里的Frame buffer我就不说了,因为网上的教程很多,再说我也不常用它,有对它比较感兴趣的朋友可以自己查找一下。
301K3332E3.jpg (22.72 KB, 下载次数: 0)
00:17 上传
24、这里的Default lights是选择是否应用max默认的灯光, 一般为不选。
Max depth指的是反射和折射的叠加次数,一般在测试阶段为选中状态,设定一个比较低的数值可以节约渲染时间,不选状态为每个模型使用自身材质设置的反射和折射的大小。Maps代表在渲染时是否显示贴图,在测试灯光的时候可以关闭。Override mtl的使用方法:我们一般会看到火星的高手们会出两个一样的效果图,一个是带网格的、纯白模型的,一个是带颜色的。这个带网格的效果就要依靠Override mtl,首先勾选,使其为可用状态,然后在材质中调节一个材质,将其关联复制给Override mtl后面的框框即可。在不需要的情况下只要取消勾选就可以了,很方便的,也是测试灯光的一种方法。下面的我就不说了,要费很多的口舌还不一定说的明白,还是大家自学吧。
301K45463I.jpg (46.2 KB, 下载次数: 0)
00:17 上传
301K502N24.jpg (40.27 KB, 下载次数: 0)
00:17 上传
301K5101460.jpg (42.18 KB, 下载次数: 0)
00:17 上传
我所能提供给大家的,告诉大家的,与大家分享的就这些了。有些我讲得很笼统,一是想偷懒,还有就是要靠自己去学。学什么,怎么学,这是你的问题,我把需要学的和哪些是重点告诉了你,自己去寻找答案吧,只有这样学到的知识才是自己的。谢谢大家赏脸观看,如有偏颇之处还望指教与分享。
上一篇:下一篇:
Copyright . All Rights Reserved.可视化系列(14)
转载自:http://blog.csdn.net/u/article/details/
前面我们使用qplot函数对ggplot2做图的方法进行了初步的了解,并比较了qplot和plot函数的用法。从最终得到的结果(图形)来看,除了外观不同外好像qplot函数和plot函数并没有什么本质的差别。这其实是一个骗局!
1&图形对象
我们知道,R语言基本做图方法都是通过函数完成的(如果不了解请参考本博客《散点图》一文),这些函数直接在输出设备上执行一些列操作得到图形。很多函数没有返回值,即使有返回值也不会反映绘图操作的整个过程。但ggplot2不一样,它用图形对象存储做图的细节,通过输出图形对象获得图形。一行一行地运行下面代码可以发现这一点:
&span style=&color: rgb(0, 42, 84);&&library&/span&(ggplot2)
&span style=&color: rgb(0, 42, 84);&&theme_set&/span&(&span style=&color: rgb(0, 42, 84);&&theme_bw&/span&())
x &span style=&color: rgb(84, 0, 84);&&&strong&&-&/strong&&/span& &span style=&color: rgb(184, 93, 0);&&1&/span&:&span style=&color: rgb(184, 93, 0);&&100&/span&
y &span style=&color: rgb(84, 0, 84);&&&strong&&-&/strong&&/span& &span style=&color: rgb(0, 42, 84);&&rnorm&/span&(&span style=&color: rgb(184, 93, 0);&&100&/span&)
p1 &span style=&color: rgb(84, 0, 84);&&&strong&&-&/strong&&/span& &span style=&color: rgb(0, 42, 84);&&plot&/span&(x, y)
p2 &span style=&color: rgb(84, 0, 84);&&&strong&&-&/strong&&/span& &span style=&color: rgb(0, 42, 84);&&qplot&/span&(x, y)
很显然执行最后一行代码不会得到想要的图形。下面再看看 p1 和 p2 分别是什么:
&span style=&color: rgb(0, 42, 84);&&class&/span&(p1)
## [1] &NULL&
&span style=&color: rgb(0, 42, 84);&&class&/span&(p2)
## [1] &gg&
&span style=&color: rgb(0, 42, 84);&&typeof&/span&(p2)
## [1] &list&
&span style=&color: rgb(0, 42, 84);&&str&/span&(p2)
## List of 9
:'data.frame': 0 obs. of
0 variables
:List of 1
..$ :Classes 'proto', 'environment'
:Reference class 'Scales' [package &ggplot2&] with 1 fields
..$ scales: list()
..and 21 methods, of which 9 are possibly relevant:
add, clone, find, get_scales, has_scale, initialize, input, n,
non_position_scales
:List of 2
..$ x: symbol x
..$ y: symbol y
$ coordinates:List of 1
..$ limits:List of 2
.. ..$ x: NULL
.. ..$ y: NULL
..- attr(*, &class&)= chr [1:2] &cartesian& &coord&
:List of 1
..$ shrink: logi TRUE
..- attr(*, &class&)= chr [1:2] &null& &facet&
$ plot_env
:List of 2
..$ x: chr &x&
..$ y: chr &y&
- attr(*, &class&)= chr [1:2] &gg& &ggplot&
plot函数的返回值p1的class属性为NULL(空),而qplot函数的返回值p2的calss属性有两个“gg” 和 “ggplot”,其本质是长度为9的列表对象。打印这个对象就会得到图形:
&span style=&color: rgb(0, 42, 84);&&print&/span&(p2)
qplot函数的作用是产生一个ggplot对象,但获得ggplot对象的更一般方法是使用对象类型的同名函数ggplot。它的用法是:
&span style=&color: rgb(0, 0, 195);&&# 非运行代码&/span&
&span style=&color: rgb(0, 42, 84);&&ggplot&/span&(df, &span style=&color: rgb(0, 42, 84);&&aes&/span&(x, y, &other aesthetics&))
&span style=&color: rgb(0, 42, 84);&&ggplot&/span&(df)
&span style=&color: rgb(0, 42, 84);&&ggplot&/span&()
ggplot函数用于初始化一个ggplot对象,即使不指定任何做图相关的内容,它的结构也是完整的:
&span style=&color: rgb(0, 42, 84);&&length&/span&(p2)
&span style=&color: rgb(0, 42, 84);&&length&/span&(&span style=&color: rgb(0, 42, 84);&&ggplot&/span&())
2&ggplot图形对象组成
ggplot图形对象是由9个元素组成的列表,这点已经清楚。元素的名称为:
&span style=&color: rgb(0, 42, 84);&&names&/span&(p2)
## [1] &data&
## [6] &coordinates& &facet&
&plot_env&
但是单从图形对象的结构上没办法理解ggplot2做图的过程和细节,所以还得了解一点相关的理论。ggplot2是Wilkinson做图理论 Grammer of Graphics 的R语言实现。太高深了,不知道从哪开始,还是从ggplot图形列表对象的元素组成做一点简单了解吧。
2.1&数据 data
似乎就是数据。但是如果试图查看上面p2对象的数据:
## data frame with 0 columns and 0 rows
是空的。但如果使用qplot函数时指定了data,情况就不一样了:
p3 &span style=&color: rgb(84, 0, 84);&&&strong&&-&/strong&&/span& &span style=&color: rgb(0, 42, 84);&&qplot&/span&(carat, price, &span style=&color: rgb(0, 84, 0);&&data&/span&=diamonds, &span style=&color: rgb(0, 84, 0);&&color&/span&=cut, &span style=&color: rgb(0, 84, 0);&&shape&/span&=cut)
&span style=&color: rgb(0, 42, 84);&&head&/span&(p3$data, &span style=&color: rgb(184, 93, 0);&&3&/span&)
cut color clarity depth table price
326 3.95 3.98 2.43
0.21 Premium
326 3.89 3.84 2.31
327 4.05 4.07 2.31
&span style=&color: rgb(0, 42, 84);&&nrow&/span&(p3$data)
## [1] 53940
列表对象的data元素存储了整个diamnods数据框的数据。用ggplot函数可以单独指定data项:
p4 &span style=&color: rgb(84, 0, 84);&&&strong&&-&/strong&&/span& &span style=&color: rgb(0, 42, 84);&&ggplot&/span&(diamonds)
&span style=&color: rgb(0, 42, 84);&&head&/span&(p4$data, &span style=&color: rgb(184, 93, 0);&&3&/span&)
cut color clarity depth table price
326 3.95 3.98 2.43
0.21 Premium
326 3.89 3.84 2.31
327 4.05 4.07 2.31
2.2&映射 mapping
ggplot对象的data项存储了整个数据框的内容,而“映射”则确定如何使用这些数据。在ggplot2中,图形的可视属性如形状、颜色、透明度等称为美学属性(或艺术属性),确定数据与美学属性之间对应关系的过程称为映射,通常使用aes函数完成(qplot函数中使用参数设置映射):
&span style=&color: rgb(0, 42, 84);&&str&/span&(p3$mapping)
## List of 4
$ colour: symbol cut
$ shape : symbol cut
: symbol carat
: symbol price
&span style=&color: rgb(0, 42, 84);&&str&/span&(p4$mapping)
p4 &span style=&color: rgb(84, 0, 84);&&&strong&&-&/strong&&/span& p4 + &span style=&color: rgb(0, 42, 84);&&aes&/span&(&span style=&color: rgb(0, 84, 0);&&x&/span&=carat, &span style=&color: rgb(0, 84, 0);&&y&/span&=price, &span style=&color: rgb(0, 84, 0);&&color&/span&=color, &span style=&color: rgb(0, 84, 0);&&shape&/span&=cut)
&span style=&color: rgb(0, 42, 84);&&str&/span&(p4$mapping)
## List of 4
: symbol carat
: symbol price
$ colour: symbol color
$ shape : symbol cut
p4 &span style=&color: rgb(84, 0, 84);&&&strong&&-&/strong&&/span& p4 + &span style=&color: rgb(0, 42, 84);&&aes&/span&(&span style=&color: rgb(0, 84, 0);&&x&/span&=carat, &span style=&color: rgb(0, 84, 0);&&y&/span&=price, &span style=&color: rgb(0, 84, 0);&&color&/span&=cut, &span style=&color: rgb(0, 84, 0);&&shape&/span&=cut)
&span style=&color: rgb(0, 42, 84);&&str&/span&(p4$mapping)
## List of 4
: symbol carat
: symbol price
$ colour: symbol cut
$ shape : symbol cut
需要说明的是,上面第三行代码使用了加号,这是ggplot2为ggplot对象定义的运算方法,表示设置ggplot对象中对应的内容。
2.3&图层 layers
2.3.1&图层组成
在ggplot的列表结构里面看不到我们指定的图形类型参数。这些设置被分派到layers里面了:
## geom_point:
## stat_identity:
## position_identity: (width = NULL, height = NULL)
一个图层包含了至少3个东西(数据和映射当然必需,另算):geom、stat和position
几何类型 geom:是数据在图上的展示形式,即点、线、面等。在ggplot2里面有很多预定义的几何类型。统计类型 stat:是对数据所应用的统计类型/方法。上面的p2和p3对象我们并没有指定统计类型,但是自动获得了identity,因为ggplot2为每一种几何类型指定了一种默认的统计类型,反之亦然。所以如果仅指定geom或stat中的一个,另外一个会自动获取。位置 position:几何对象在图像上的位置调整,这也有默认设定。
不指定几何类型或统计类型的ggplot对象的图层是空列表,即没有图层,也不能输出图像:
&span style=&color: rgb(0, 42, 84);&&print&/span&(p4)
## Error: No layers in plot
也就是说,指定了几何类型或统计类型,图层就会产生:
(p4 + &span style=&color: rgb(0, 42, 84);&&geom_point&/span&())$layers
## geom_point: na.rm = FALSE
## stat_identity:
## position_identity: (width = NULL, height = NULL)
(p4 + &span style=&color: rgb(0, 42, 84);&&stat_identity&/span&())$layers
## geom_point:
## stat_identity: width = NULL, height = NULL
## position_identity: (width = NULL, height = NULL)
为什么图层说“至少”包含3个内容呢?如果你把整个图层的内容转成列表结构显示以下就会发现更多:
&span style=&color: rgb(0, 42, 84);&&as.list&/span&((p4 + &span style=&color: rgb(0, 42, 84);&&geom_point&/span&())$layers[[&span style=&color: rgb(184, 93, 0);&&1&/span&]])
## $mapping
## $geom_params
## $geom_params$na.rm
## [1] FALSE
## $stat_params
## named list()
## stat_identity:
## $inherit.aes
## [1] TRUE
## geom_point:
## $position
## position_identity: (width = NULL, height = NULL)
## $subset
## attr(,&class&)
## [1] &waiver&
## $show_guide
2.3.2&图层加法
从图层的结构可以看到它在ggplot对象中是一个多重列表,如果对ggplot对象做图层加法运算,是增加图层而不是替换图层:
(p4 + &span style=&color: rgb(0, 42, 84);&&geom_point&/span&() + &span style=&color: rgb(0, 42, 84);&&geom_line&/span&())$layers
## geom_point: na.rm = FALSE
## stat_identity:
## position_identity: (width = NULL, height = NULL)
## geom_line:
## stat_identity:
## position_identity: (width = NULL, height = NULL)
2.3.3&图层顺序
ggplot2按“层”做图,所以图层的顺序对于图形的表现会有影响,如果几何对象有叠加,那么后面图层的对象会覆盖前面图层的对象。下面只是调换了两个图层的顺序,但由于数据点是相同的,所以图形的颜色完全不一样:
p4 + &span style=&color: rgb(0, 42, 84);&&geom_point&/span&(&span style=&color: rgb(0, 84, 0);&&color&/span&=&span style=&color: rgb(209, 0, 0);&&&red&&/span&) + &span style=&color: rgb(0, 42, 84);&&geom_point&/span&(&span style=&color: rgb(0, 84, 0);&&color&/span&=&span style=&color: rgb(209, 0, 0);&&&blue&&/span&)
p4 + &span style=&color: rgb(0, 42, 84);&&geom_point&/span&(&span style=&color: rgb(0, 84, 0);&&color&/span&=&span style=&color: rgb(209, 0, 0);&&&blue&&/span&) + &span style=&color: rgb(0, 42, 84);&&geom_point&/span&(&span style=&color: rgb(0, 84, 0);&&color&/span&=&span style=&color: rgb(209, 0, 0);&&&red&&/span&)
2.4&标尺 scales
这是ggplot2中比较复杂的一个概念,从ggplot对象中能获取的信息不多:
## Reference class object of class &Scales&
## Field &scales&:
在ggplot2中,一个标尺就是一个函数,它使用一系列参数将我们的数据(如钻石价格、克拉)转成计算机能够识别的数据(如像素、颜色值),然后展示在图像上。使用标尺对数据进行处理的过程称为缩放(scaling)。坐标的产生和图形美学属性的处理都需要使用标尺对数据进行缩放。这个过程比较复杂,尤其是美学属性与数据的关联,因为和美学属性相关的数据不仅有连续型还有离散型,多组数据之间还要相互关照。但这些过程我们都可以不管,ggplot2也替我们做了。
标尺是函数,它的反函数用于产生坐标刻度标签和图表的图例等,这样我们才能把图形外观、位置等信息和数据对应起来。
2.5&坐标 coordinates
这都知道,用于确定采用的坐标系统和坐标轴的范围。
&span style=&color: rgb(0, 42, 84);&&str&/span&(p4$coordinates)
## List of 1
$ limits:List of 2
..$ x: NULL
..$ y: NULL
- attr(*, &class&)= chr [1:2] &cartesian& &coord&
2.6&主题 theme
标题文字(字体、字号、颜色)、图形边框和底纹等跟数据无关的一些图形元素的设置都可以归到“主题”这一类。ggplot2提供了4个成套主题:theme_gray(), theme_bw() , theme_minimal() 和 theme_classic()。其中theme_gray()为默认主题,灰背景;后两个是0.9.3版才增加的。
p5 &span style=&color: rgb(84, 0, 84);&&&strong&&-&/strong&&/span& p4 + &span style=&color: rgb(0, 42, 84);&&geom_point&/span&(&span style=&color: rgb(0, 84, 0);&&color&/span&=&span style=&color: rgb(209, 0, 0);&&&blue&&/span&)
p5 + &span style=&color: rgb(0, 42, 84);&&theme_gray&/span&() + &span style=&color: rgb(0, 42, 84);&&ggtitle&/span&(&span style=&color: rgb(209, 0, 0);&&&theme_gray()&&/span&)
p5 + &span style=&color: rgb(0, 42, 84);&&theme_bw&/span&() + &span style=&color: rgb(0, 42, 84);&&ggtitle&/span&(&span style=&color: rgb(209, 0, 0);&&&theme_bw()&&/span&)
p5 + &span style=&color: rgb(0, 42, 84);&&theme_minimal&/span&() + &span style=&color: rgb(0, 42, 84);&&ggtitle&/span&(&span style=&color: rgb(209, 0, 0);&&&theme_minimal()&&/span&)
p5 + &span style=&color: rgb(0, 42, 84);&&theme_classic&/span&() + &span style=&color: rgb(0, 42, 84);&&ggtitle&/span&(&span style=&color: rgb(209, 0, 0);&&&theme_classic()&&/span&)
2.7&分面 facet:
一页多图,跟图层好像没有直接关系。以后再说。
2.8&标签 labels:
&span style=&color: rgb(0, 42, 84);&&str&/span&(p4$labels)
## List of 4
: chr &carat&
: chr &price&
$ colour: chr &cut&
$ shape : chr &cut&
3&ggplot2做图过程
如果E文水平可以,下载 Hadley Wickham 写的《ggplot2: Elegant Graphics for Data Analysis》一书来看看(到处都有)。理论性太强,太高深,不敢乱说。
4&SessionInfo
&span style=&color: rgb(0, 42, 84);&&sessionInfo&/span&()
## R version 3.1.0 ()
## Platform: x86_64-pc-linux-gnu (64-bit)
## locale:
[1] LC_CTYPE=zh_CN.UTF-8
LC_NUMERIC=C
[3] LC_TIME=zh_CN.UTF-8
LC_COLLATE=zh_CN.UTF-8
[5] LC_MONETARY=zh_CN.UTF-8
LC_MESSAGES=zh_CN.UTF-8
[7] LC_PAPER=zh_CN.UTF-8
[9] LC_ADDRESS=C
LC_TELEPHONE=C
## [11] LC_MEASUREMENT=zh_CN.UTF-8 LC_IDENTIFICATION=C
## attached base packages:
## [1] tcltk
grDevices utils
## [8] base
## other attached packages:
## [1] ggplot2_0.9.3.1 zblog_0.1.0
## loaded via a namespace (and not attached):
[1] colorspace_1.2-4 digest_0.6.4
evaluate_0.5.3
formatR_0.10
[5] grid_3.1.0
gtable_0.1.2
labeling_0.2
[9] MASS_7.3-31
munsell_0.4.2
plyr_1.8.1
proto_0.3-10
## [13] Rcpp_0.11.1
reshape2_1.2.2
scales_0.2.4
stringr_0.6.2
## [17] tools_3.1.0
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:166732次
积分:2312
积分:2312
排名:第13412名
转载:373篇}

我要回帖

更多关于 linux启动过程详解 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信