《R绘图系统(第2版)》一1.2 R绘图系统的结构

1.2 R绘图系统的结构

这一节简要阐述了R 绘图函数库中的函数是如何组织的,以使用户能够了解怎样开始寻找一个特定的函数。

在R绘图工具库中占据核心地位的是grDevices包,该包同时也被称为绘图引擎。grDevices包提供了一系列R中的基本绘图函数,如选择颜色和字体以及选择绘图输出格式。尽管几乎所有的R绘图应用都使用了grDevices包,这其中绝大部分只需要通过学习一些基本知识即可掌握,所以关于该包中绘图函数的细节被安排在本书第3部分介绍。

在绘图引擎的基础上直接搭建了两个包:graphics包和grid包。这两个包代表着两个巨大的不相容的绘图系统,并将R的绘图功能从主体上分割成了两个不同的部分。

graphics包,也被称为传统绘图系统,提供了创建一系列丰富的通用图形所用到的完整函数集,以及供用户在自定义图中能够控制到非常具体的细节所需要的绘图函数。这些内容在本书第1部分具体介绍。

grid 包则提供了一系列不同的基本绘图工具。它并没有提供绘制完整图形的函数,所以通常并不直接用于绘制统计图形。相反,人们广泛使用基于grid之上所开发的绘图包中的函数,特别是其中的lattice 包和ggplot2包。这3个包,构建起了R grid绘图系统中的主体,关于这3个包的介绍安排在本书的第2部分。

此外,还有许多其他的绘图函数包是基于graphics包或者grid包的。例如,maps 包提供了在传统绘图系统中绘制地图所需的函数,pixmap包提供了可以嵌入外部光栅图像,特别是graphics包内部绘制的图形所需要的函数,而grImport包则提供了能够包含外部矢量图像,特别是通过grid绘图系统所绘制的图形所用到的函数。图1.14展示了从这些绘图包中选取的一小部分。本书的第4部分将广泛选取R的一些扩展包给予介绍。

有一些包则相当程度的独立于R中主要的绘图工具库。这些包提供了R 与第三方绘图系统的接口,例如用于绘制复杂三维图形的OpenGL图形库(rgl 包),以及绘制动态交互图形系统的图形库(rggobi 和 iplots 包)。这些包将在本书第四部分作基本介绍。

最后,还有一些为R提供了额外绘图设备的函数包。这些包使得R 图形输出能够嵌入到其他系统,例如,tikzDevice包可以绘制嵌入到LaTex文件的图形,JavaGD 包提供了在Java应用内实现R图形输出的功能。在本书第3部分会提及这些包。

1.2.1 绘图函数的类型

R绘图系统与绘图程序包可以分成两个主要类型:用于绘制完整图形的高级函数和在已经存在的图形上添加额外图形的低级函数。

传统绘图系统以及在其之上构建的绘图程序包,提供了当前R中可用高级绘图函数的主体。最重要的例外是lattice包(见第4章)和ggplot2包(见第5章),这两个包提供了基于grid绘图系统的完整绘图函数。同时,传统绘图系统和grid 绘图系统也提供了许多低级绘图函数。

大多数绘图包中的函数都用来绘制完整的图形,并且通常用于提供针对某种特定类型分析或者专门领域研究所需的绘图功能。例如:在hexbin包中提供了用于海量数据可视化的六边形面元化绘图功能(见12.5节);maps包提供了地理数据可视化的绘图函数(见14.1.1小节);scatterplot3d提供了绘制多种三维图形的绘图功能(见16.5节)。如果读者有绘制某种特定类型图形的需要,很可能已经有人编写了实现这类功能的函数。例如,在R-help邮件列表中经常有人询问如何在散点图或者条形图中增加误差条,实现该功能的方法有很多种,例如,使用传统的arrows()函数,使用gplots包中的plotCI()函数或者使用Hmic函数包中的errbar()函数。R提供了一些用来连接R主页站点的搜索工具以帮助用户寻找为实现某个特定目的所需要的专业函数。在sos程序包中,就通过函数findFn() 提供了一个友好的网络接口。

图1.14 R图形系统的结构。深灰色背景的包构成了图形系统的核心。本书第1部分介绍了graphics包,第2部分会介绍grid、lattice和ggplot2包,第3部分会介绍grDeivces包。浅灰色背景的包是对核心系统作扩展的示例,会在第4部分介绍。有一些包提供了独立的图形系统,我们会在几个代表性的包中详细介绍这些图形系统,它们和核心图形包没有关系。

1.2.2 传统绘图系统与grid绘图系统

R中存在着两个不同的绘图系统,传统绘图系统与grid绘图系统,这就带来了一个问题,在什么时侯选用什么样的绘图系统。

对于某些以通过简单函数调用来绘制完整图形为目的的用户来说,如何选择绘图系统大多数时候依赖于需要绘制何种类型的图形。如果没有在现有图形上添加更多图形的需要,对绘图系统的选择很大程度上是彼此不相干的。

如果有在现有图形上添加更多图形的需要,用户则需要知道该用何种绘图系统绘制初始图形。通常,应该使用同一个绘图系统添加额外的图形(尽管在第19章中介绍的gridBase程序包中,提供了一种绕开这种限制的方法)。

对一系列通用标准图形来说,可以通过使用lattice、ggplot2和graphics包提供的函数来绘制3种不同样式的该类图形。作为通用准则,lattice和ggplot2包所默认的样式通常被优先使用,因为它们都是根据人们的认知规律而开发设计从而使得图形能够更好地传递信息。

对于多元数据集的可视化,lattice和ggplot2包也提供了更多复杂的支持,例如向一个简单的两个连续变量的散点图中添加内容,可以通过对数据内不同子集使用不同线段或者使用不同的图形符号来表示,或者对不同的子集绘制单独图形的方式来实现。

当然,使用lattice和ggplot2包中的高级特性的代价是,用户需要付出很大的努力学习并熟悉这些包所对应的知识体系。对于lattice包,用户需要专门学习如何显式的定制默认样式,而对于 ggplot2 ,则需要一段时间去适应 ggplot2 的设计理念,尽管掌握了这种理念就可以设计出更多一致且强大的图形样式。

总之,关于如何选择绘图系统,用户可能会从快速上手的角度选择传统绘图系统,但是从长远看,lattice和ggplot2包能够提供更多有效并且复杂的选项。

对于更多专项绘图,例如绘制地图或者节点-边图,选择是根据那个程序包提供相关绘图函数决定的(见本书第4部分的相关章节)。

一个不同的问题是当绘制那些没有现成函数可以用的图形时,需要借助低级函数。在这种情况下,相比于传统绘图系统的低级函数,grid绘图系统提供了更加广泛的可用选择,代价是需要深入学习一些概念。

如果用户的目的是创造新的绘图函数供其他人使用,grid绘图系统也提供了比传统绘图系统更好的支持,使用户更容易绘制混合了各类图形的复杂图形。

最后需要考虑的是速度。没有任何绘图系统能够盲目地被描述为快速的,但是基于grid的绘图系统速度明显要慢于传统绘图系统,并且这些缺点在某些应用中会特别明显。

章节总结

R 绘图系统由一个核心绘图引擎和两个低级绘图系统(传统绘图系统和grid绘图系统)构成。传统绘图系统包含了很多高级函数用于绘制完整图形。搭建于grid绘图系统之上的lattice包和 ggplot2包也提供了高级绘图函数库。许多扩展程序包为这个两个绘图系统提供了更多的绘图工具,这意味着用户有可能利用R创造出许多丰富多彩的图形和图像。

时间: 2017-05-02
Tags: 函数

《R绘图系统(第2版)》一1.2 R绘图系统的结构的相关文章

MIUI邂逅魅族MX3 小米系统公测版真机体验

[TechWeb报道]近日,小米官网正式向广大 网友推出MIUI正式向广大机友推出小米系统公测版,虽然命名上仍然称之为系统,但实际上这并不是一个我们熟知的ROM,而是一款APP.是的,它就是一款App!MIUI虽然基本上适配了多数热门机型,但仍然无法覆盖所有机型,这一现象也孕育了这款App的诞生,通过常规安装,你将可以在你的非小米Android手机上实现七成以上的MIUI功能.现在我们就来体验这款名为小米系统的MIUI应用.此前,在小米社区有过这款小米系统的测试活动,小米官方也简单的介绍过这款A

《R绘图系统(第2版)》一2.6 绘图函数的参数

2.6 绘图函数的参数 在通常情况下,特别是绘制用于发表出版的绘图时,通过简单调用一个高级绘图函数绘制的图像并不能够满足我们的所有需求.R提供了许多方式可以修改绘图函数的输出,并且本书第3章有关于这个话题的详细谈论.这一节仅仅探讨一下通过指定高级绘图函数的参数来改进输出图形的可能性. 对于给定的某个函数其大多数参数是特定的.例如,在boxplot()函数的所有参数中有两个参数:width 和 boxwex,用于控制图形中箱子的宽度,而在barplot()函数中有一个参数horiz,是用来控制是

Win7系统原版安装版右下角输入法图标不见了?

  Win7系统原版安装版右下角输入法图标不见了?           步骤: 1.按下"Win+R"组合键呼出运行,在框中输入"ctfmon",按下回车键; 2.点击开菜单,点击"控制面板",在控制面板的查看方式修改为"大图标",然后点击"区域和语言"; 3.在"区域和语言"窗口中点击"键盘和语言"选项卡,然后点击"更改键盘"; 4.在"

《UNIX/Linux 系统管理技术手册(第四版)》——1.6 特定于系统的管理工具

1.6 特定于系统的管理工具 UNIX/Linux 系统管理技术手册(第四版) 在现代的操作系统内,包含有各种各样可视化的工具和控制面板(比如SUSE的YaST2和IBM的SMIT),帮助用户配置或者管理选定的系统功能.这些工具非常有用,特别是对于管理员新手来说更是如此,但是它们也倾向于不能完整地体现下层软件的实际操作.它们让管理工作变得容易,但大多数又变得不那么权威. 在本书中,出于下面几个原因,我们要介绍可视化工具调用的底层机制,而不是工具本身.第一,可视化工具趋于专有化(或者至少是趋于为系

windows 10手机系统预览版10051已知问题汇总

下面是win10手机系统预览版10051具体重要更新内容: 1• 斯巴达浏览器:本次加入斯巴达浏览器早期版本,是Modern移动应用,新的引擎,新的应用包括早期的阅读模式和阅读列表,斯巴达浏览器还不是默认的,并且与IE11共存. 2• 新的邮件和日历应用:Outlook Mail和Outlook Calendar取代之前的邮件.日历,都是Windows10通用应用.这些应用带来全新的UI设计,邮件和日历之间可以平滑切换,无需返回到开始屏幕.邮件自带手势功能,可以滑动删除.移动.标记.未标记. 3

《UNIX环境高级编程(第3版)》——2.3 UNIX系统实现

2.3 UNIX系统实现 上一节说明了3个由各自独立的组织所制定的标准:ISO C.IEEE POSIX以及Single UNIX Specification.但是,标准只是接口的规范.这些标准是如何与现实世界相关连的呢?这些标准由厂商采用,然后转变成具体实现.本书中我们不仅对这些标准感兴趣,还对它们的具体实现感兴趣. 在McKusick等[1996]的1.1节中给出了UNIX系统家族树的详细历史.UNIX的各种版本和变体都起源于在PDP-11系统上运行的UNIX分时系统第6版(1976年)和第

运行原生Android系统的谷歌版OPPO Find 5?

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   目前,一般的"大厂"推出的 Android手机都会搭载自己定制过的UI,鲜有直接采用原生Android系统的. 不过在三星发布了谷歌版 Galaxy S4之后,似乎别的厂商也已经有"松动"迹象.华为余承东已经表明不会推出谷歌版(采用原生Android系统)的Ascend P6, 但是国内其他厂商却已经有此想法,而 OPPO

为我的 web os 开发的第一个应用web erp系统预览版,欢迎大家观摩指正!

问题描述 为我的webos开发的第一个应用weberp系统预览版,欢迎大家观摩指正!webos的开发而设计了一个崭新的开发框架,目标是快速开发各种web应用软件,目前尝试开发了第一个erp系统,欢迎大家观摩指正!webos将扩展集成各种已知和未知的应用,其中包括:各行业知识搜索引擎,erp,OA,进销存,财务,出纳管理,C2C,在线excel,在线word,博客,论坛,相册等免费服务为了这个目标我从头开始,完全自主设计了一个能快速开发这些应用的开发框架,下面的erp就是在我这个开发框架上开发出的

“小米系统”公测版App上线小米官网 定位不刷机版MIUI

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断淘宝客 站长团购 云主机 技术大厅 "小米系统"公测版应用截图 [TechWeb报道]4月2日消息,小米今日正式发布"不刷机的MIUI"小米系统.在此之前,这款无需刷机并集成了MIUI主要核心功能的系统管理型APP已进行了数月封测,小米系统集成了包括MIUI拨号管理.MIUI联系人.MIUI短信.MIUI云服务.MIUI桌面等在内

小米系统公测版App亮相小米官网 无需刷机的MIUI

[TechWeb报道]4月2日消息,小米官方今日正式发布不刷机的MIUI小米系统.在此之前,这款无需刷机并集成了MIUI主要核心功能的系统管理型APP已进行了数月封测,小米系统集成了包括MIUI拨号管理.MIUI联系人.MIUI短信.MIUI云服务.MIUI桌面等多数MIUI功能.目前,小米系统集成了超过2000款主题,上万个铃声和壁纸,还深度集成了MIUI拨号和 MIUI短信.MIUI云服务等功能.其中MIUI拨号支持T9拨号,MIUI短信则支持小米系统与MIUI用户之间通过网络免费互发短信,