R绘图系统7
7 图形系统(Graphics)

x = linspace(-3,3); y = sin(x); plot(x,y) y0 = x; hold on plot(x,y0) y1 = x - x.^3/6; plot(x,y1) hold off str = '$$\sin(x) = \sum_{n=0}^{\infty}{\frac{(-1)^n x^{2n+1}}{(2n+1)!}}$$'; text(-2,1,str,'Interpreter','latex')
x = linspace(0,10); y = sin(x); plot(x,y) grid on
x = linspace(0,10); y = sin(x); plot(x,y) grid on grid minor
x = linspace(0,10); y = sin(x); ax1 = subplot(2,1,1); plot(x,y) y2 = sin(3*x); ax2 = subplot(2,1,2); plot(x,y2)
view([-65 30]) rotate3d on
交互式绘图(Interactive Plotting)
• Plots Tab
• Plot Tools
Create Graph Using Plots Tab
>> x = linspace(1,10,50); >> y = sin(x);
开启Plot Tools
Tex字符
x = linspace(0,2*pi); y = sin(x); plot(x,y) title('x ranges from 0 to \fontsize{20}\color[rgb]{1,0,0} 2\pi')
AUTO CAD 2007教程2

图3.2.2 快捷菜单
注意:用直线命令绘制的直线在默认状态下是没有宽度 的,但可以通过不同的图层定义直线的线宽和颜色,在打印 输出时,可以打印出粗细不同的直线。
二、绘制圆 圆是工程制图中另一种常见的基本实体。在AutoCAD 2007中提供了6种绘制圆的方法。 启动圆命令有如下3种方法: (1)菜单栏:选择“绘图”→“圆”菜单下的子命令。 (2)工具栏:单击“绘图”工具栏中的“圆”按钮。 (3)命令行:在命令行输入CIRCLE。
2.选项含义 (1)指定第一点:通过键盘输入或鼠标确定直线的起点 位置。 (2)闭合(C):用于将最后一个端点与第一条线段的起点 重合形成封闭图形。 (3)放弃(U):取消上一步绘制的线段。 在AutoCAD 2007中,当命令操作有多个选项时,单击鼠 标右键将弹出类似于如图3.2.2所示的快捷菜单,虽然命令选项 会因命令的不同而不同,但基本选项大同小异。
图3.1.1 选择对象以虚线形式呈高亮度显示
二、窗口选择方式 窗口选择方式是在“选择对象:”提示下指定两个角点即 可定义某区域。角点指定的次序不同,选择的结果也不同,指 定了第一个角点以后,从左向右拖动(选择窗口)仅选择完全 包含在选择区域内的对象;从右向左拖动(交叉选择)可选择 包含在选择区域内以及与选择区域的边框相交叉的对象。对象 至少有一部分是可见的,否则不能被选中,如图3.1.2所示。
图3.2.9 绘制圆弧
2.选项含义 选择“绘图”→“圆弧”命令,系统弹出如图3.2.10所示 的子菜单,该菜单提供了11种方法绘制圆弧,下面分别进行介 绍。 (1)“三点”命令:该命令是通过3个指定点来绘制圆弧, 第一个点是起始点,第三个点是终点,第二点是圆弧上任意一 点,这是系统默认绘制圆弧的方式(见图3.2.9)。
r ggplot2函数

r ggplot2函数ggplot2是R语言中非常常用的一个数据可视化工具,它提供了一种基于图层的绘图系统,可以方便地创建各种高质量的图形。
本文将就ggplot2的基本绘图函数进行详细介绍。
1. ggplot()ggplot()是ggplot2中最重要的函数,它用于创建一个基本绘图对象,可以用于绘制散点图、线图、柱状图等等。
该函数需要传入两个参数,一个数据集和一个定义了坐标轴和图形类型的图层。
2. aes()aes()函数用于定义映射关系,将变量映射到图形元素上。
可以通过aes()函数将x轴、y轴、颜色、形状等图形元素与数据集中的变量对应起来。
3. geom_point()geom_point()函数用于绘制散点图,它需要传入一个数据集和与数据集中变量对应的aes()函数。
可以利用geom_point()函数绘制不同颜色、大小、形状的散点图。
4. geom_line()geom_line()函数用于绘制线图,需要传入一个数据集和与数据集中变量对应的aes()函数。
geom_line()函数可以绘制不同颜色、线型的折线图。
5. geom_bar()geom_bar()函数用于绘制柱状图,需要传入一个数据集和与数据集中变量对应的aes()函数。
还可以利用fill参数设置柱子的颜色。
6. facet_wrap()facet_wrap()函数用于绘制分面图,可以将数据集中的数据按照一定的规则分组,然后将每个组单独绘制成一个子图。
facet_wrap()函数可以通过指定行数和列数来控制整个图形的排版。
7. ggtitle()ggtitle()函数用于添加标题,需要传入一个字符串作为标题内容。
可以利用ggtitle()函数添加图形的总标题。
8. xlab()和ylab()xlab()和ylab()函数用于添加x轴和y轴的标签,需要传入一个字符串作为标签内容。
可以利用xlab()和ylab()函数为图形添加轴标签。
R语言入门教程

R语言简介R语言笔记:数据分析与绘图的编程环境版本1.7R Development Core TeamJune10,2006Contents1绪论与基础11.1R语言环境 (1)1.2相关的软件和文档 (1)1.3R与统计 (2)1.4R与视窗系统 (2)1.5R的交互使用 (2)1.6入门训练 (3)1.7获取函数和功能的帮助信息 (3)1.8R的命令、对大小写的敏感,等等 (3)1.9对已输入命令的记忆和更改 (4)1.10命令文件的执行和输出的转向到文件 (4)1.11数据的保持与对象的清除 (4)2简单操作;数值与向量52.1向量与赋值 (5)2.2向量运算 (5)2.3产生规则的序列 (6)2.4逻辑向量 (7)2.5缺失值 (7)2.6字符向量 (7)2.7索引向量(index vector);数据集子集的选择与修改 (8)2.8对象的其他类型 (9)3对象,模式和属性103.1固有属性:模式和长度 (10)3.2改变对象的长度 (11)3.3属性的获取和设置 (11)3.4对象的类别 (11)4有序因子与无序因子124.1一个特例 (12)4.2函数tapply()与ragged数组 (12)4.3有序因子 (13)5数组和矩阵145.1数组 (14)5.2数组的索引和数组的子块 (14)5.3索引数组 (15)iCONTENTS ii5.4函数array() (16)5.4.1向量,数组的混合运算,重复使用规则 (16)5.5两个数组的外积 (17)5.6数组的广义转置 (17)5.7专门的矩阵功能 (18)5.7.1矩阵乘法 (18)5.7.2线性方程和矩阵的逆 (18)5.7.3特征值和特征向量 (19)5.8奇异值分解与行列式 (19)5.9最小二乘拟合及QR分解 (19)5.10构建分区矩阵,cbind()和rbind() (19)5.11连接函数c(),针对数组的应用 (19)5.12由因子生成频数表 (20)6列表和数据帧216.1列表 (21)6.2构建和修改列表 (22)6.2.1连接列表 (22)6.3数据帧 (22)6.3.1创建数据帧 (22)6.3.2attach()与detach() (23)6.3.3使用数据帧 (23)6.3.4挂接任意列表 (24)6.3.5管理搜索路径 (24)7从文件中读取数据257.1函数read.table() (25)7.2函数scan() (26)7.3内建数据集的存取 (26)7.3.1从其他R功能包中载入数据 (27)7.4编辑数据 (27)8概率分布288.1R—作为一个统计表的集合 (28)8.2检测数据集合的分布 (29)8.3单样本和两样本检验 (32)9语句组、循环和条件操作359.1表达式语句组 (35)9.2控制语句 (35)9.2.1条件执行:if语句 (35)9.2.2重复执行:for循环,repeat和while (35)10编写自己的函数3710.1简单示例 (37)10.2定义新的二元操作符 (38)10.3指定的参数和默认值 (38)10.4参数’...’.. (39)10.5函数内的赋值 (39)10.6更多高级示例 (39)CONTENTS iii10.6.1区组设计的效率因子(Efficiency factors) (39)10.6.2删除打引数组中的所有名称 (40)10.6.3递归的数值积分 (41)10.7范畴(scope) (41)10.8定制环境 (43)10.9类别,通用函数和对象定位 (44)11R的统计模型4511.1定义统计模型;公式 (45)11.1.1对比(contrasts) (48)11.2线性模型 (48)11.3用于释放模型信息的通用函数 (48)11.4方差分析与模型比较 (49)11.4.1方差分析表(ANOVA tables) (49)11.5更新拟合模型 (50)11.6广义线性模型 (50)11.6.1族(families) (51)11.6.2函数glm() (51)11.7非线性最小二乘和最大似然模型 (53)11.7.1最小二乘 (53)11.7.2最大似然 (54)11.8一些非标准的模型 (55)12图形过程5612.1高级绘图命令 (56)12.1.1函数plot() (56)12.1.2显示多元数据 (57)12.1.3显示图形 (58)12.1.4高级绘图函数的参数 (58)12.2低级绘图命令 (59)12.2.1数学注释 (61)12.2.2Hershey矢量字体 (61)12.3图形的交互 (61)12.4使用图形参数 (62)12.4.1持续性变更(Permanent changes):par()函数 (62)12.4.2临时性变更:图形函数的参数 (63)12.5图形参数列表 (63)12.5.1图形元素 (63)12.5.2坐标轴和标记 (64)12.5.3图边缘(Figure margins) (65)12.5.4多图环境 (65)12.6设备驱动 (67)12.6.1文本文档的PostScript图表 (67)12.6.2多重图形设备 (67)12.7动态图形 (68)Chapter1绪论与基础1.1R语言环境R是一套由数据操作、计算和图形展示功能整合而成的套件。
R语言绘图

R语言绘图画图例子 R Graph Cookbook例子 [html] view plain copy print ? span style =font-size:18px; / span [html] view plain copy print ? span style = font-size:18px; From: / span a href = span style = fon画图例子R Graph Cookbook例子[html] view plaincopyprint? <span style="font-size:18px;"></span>[html] view plaincopyprint?<span style="font-size:18px;">From:</span><a href=""><span style="font-size:18px;"></span></a>今天突然找到一本专门教授R语言绘图的书,R Graph Cookbook,发现还不错。
当初喜欢上R语言就是因为它绘图特别好看。
下面把这本书的内容,经过我学习后,翻译并贴上了吧。
(我水平还不够,原创还不行呀,不过学习就是先模仿再创新的过程)之所以要贴到博客上来,我是怕有一天我也忘记了,好直接到我博客上来搜索一下,同时也方便了别人。
下面说的是用R语言绘制散点图。
其实绘制散点图,用plot(x,y)直接就可以了,不过这样绘制出来的散点图太简单了,不能达到使用的要求,所以要详细得设置一些参数,才能让图形更加的漂亮。
还是直接上代码吧,我已经做好注释的了。
1.<span style="font-size:18px;">plot(cars$dist~cars$speed,#y~x,cars是R自带的数据2.main="Relationship between car distance & speed",#标题3.xlab = "Speed(miles per hour)",#x轴标题4.ylab = "Distance travelled (miles)",#Y轴标题5.xlim = c(0,30),#设置x轴的取值区间为0到306.ylim = c(0,140),#设置y轴的取值区间为0到1407.xaxs = "i",#这里是设置x轴的风格,暂时没看明白有多大区别8.yaxs = "i",9.col = "red",#设置颜色10.pch = 19)#pch指代点的形状,用数字表示,可查看帮助文档11.#如果要保存图片怎么办呢?我觉得最简单的方法就是使用RStudio这个IDE,极其得好,可惜很多人都不知道。
《R语言数据分析》课程教案(全)

《R语言数据分析》课程教案(全)第一章:R语言概述1.1 R语言简介介绍R语言的发展历程、特点和应用领域讲解R语言的安装和配置1.2 R语言基本操作熟悉R语言的工作环境学习如何创建、保存和关闭R剧本掌握R语言的基本数据类型(数值型、字符串、逻辑型、复数、数据框等)1.3 R语言的帮助系统学习如何使用帮助文档(help()、?、man()函数)掌握如何搜索和安装R包第二章:R语言数据管理2.1 数据导入与导出学习如何导入CSV、Excel、txt等格式的数据掌握如何将R数据导出为CSV、Excel等格式2.2 数据筛选与排序掌握如何根据条件筛选数据学习如何对数据进行排序2.3 数据合并与分割讲解数据合并(merge、join等函数)的方法和应用场景讲解数据分割(split、apply等函数)的方法和应用场景第三章:R语言统计分析3.1 描述性统计分析掌握R语言中的统计量计算(均值、中位数、标准差等)学习如何绘制统计图表(如直方图、箱线图、饼图等)3.2 假设检验讲解常用的假设检验方法(t检验、卡方检验、ANOVA等)掌握如何使用R语言进行假设检验3.3 回归分析介绍线性回归、逻辑回归等回归分析方法讲解如何使用R语言进行回归分析第四章:R语言绘图4.1 ggplot2绘图系统介绍ggplot2的基本概念和语法学习如何使用ggplot2绘制柱状图、线图、散点图等4.2 基础绘图函数讲解R语言内置的绘图函数(plot、barplot、boxplot等)掌握如何自定义图形和调整图形参数4.3 地图绘制学习如何使用R语言绘制地图讲解如何使用ggplot2绘制地理数据可视化图第五章:R语言编程5.1 R语言编程基础讲解R语言的变量、循环、条件语句等基本语法掌握如何编写R函数和模块化代码5.2 数据框操作学习如何使用数据框进行编程讲解如何使用dplyr等工具包进行数据框操作5.3 面向对象编程介绍R语言的面向对象编程方法掌握如何使用R6和S3编程范式第六章:R语言时间序列分析6.1 时间序列基础介绍时间序列数据的类型和结构学习时间序列数据的导入和预处理6.2 时间序列分解讲解时间序列的分解方法,包括趋势、季节性和随机成分使用R语言进行时间序列分解6.3 时间序列模型介绍自回归模型(AR)、移动平均模型(MA)、自回归移动平均模型(ARMA)和自回归积分滑动平均模型(ARIMA)学习如何使用R语言建立和预测时间序列模型第七章:R语言机器学习7.1 机器学习概述介绍机器学习的基本概念、类型和应用学习机器学习算法选择的标准和评估方法7.2 监督学习算法讲解回归、分类等监督学习算法使用R语言实现监督学习算法7.3 无监督学习算法介绍聚类、降维等无监督学习算法使用R语言实现无监督学习算法第八章:R语言网络分析8.1 网络分析基础介绍网络分析的概念和应用领域学习网络数据的导入和预处理8.2 网络图绘制讲解如何使用R语言绘制网络图学习使用igraph包进行网络分析8.3 网络分析应用介绍网络中心性、网络结构等分析方法使用R语言进行网络分析案例实践第九章:R语言生物信息学应用9.1 生物信息学概述介绍生物信息学的概念和发展趋势学习生物信息学数据类型和常用格式9.2 生物序列分析讲解生物序列数据的导入和处理使用R语言进行生物序列分析9.3 基因表达数据分析介绍基因表达数据的特点和分析方法使用R语言进行基因表达数据分析第十章:R语言项目实战10.1 数据分析项目流程介绍数据分析项目的流程和注意事项10.2 R语言项目实战案例一分析一个真实的统计数据集,实践R语言数据分析方法10.3 R语言项目实战案例二使用R语言解决实际问题,如商业分析、社会研究等10.4 R语言项目实战案例三结合数据库和API接口,进行大规模数据分析和处理重点和难点解析重点环节1:R语言的安装和配置解析:R语言的安装和配置是学习R语言的第一步,对于初学者来说,可能会遇到操作系统兼容性、安装包选择等问题。
基于ARM的远程绘图系统的设计
图 2 软件 系统 架构
4 . 1 纸 张检 测
即
将捕 获图像将 捕获图像 转换 平滑 处理后进行边缘检测,然后
将边 缘像 素进行直线拟合, 确定纸张位置。 4 . 1 . 1 图像处理
平 台和 L i n u x操 作 系 统 下 进 行 的 , 采 用 US B 接 口的 摄 像 头 来
[ ] ; Ⅳ [ ] 或 [ ] s [ ] u ’
进行数 字图像采集 , 利用 J P E G视频压缩编码方式 , 使用投影
仪进行显 示。
图 1 系统 硬 件 总 体 结 构 2系统 硬 件 平 台
仪、 摄像机绘 制出精确的 图片效果 , 成为研究的主要热点。提 出基于 A R M. L i n u x的远程绘 图系统 , 是使 用 U S B 摄 像头拍摄 下平 台 l 上用 户所绘制 的图像 , 将采 集到 的图像经过 J P E G 的编码压缩 到较高的压缩 比, 再通过 网
络 实时传输 至平 台 2 , 并通过投 影仪 显示 , 投影仪 的投影 亮度经表面反 射, 进入摄像头镜头 , 再反馈给平 台 l 。 关键词 : 嵌入式 AR M L i n u x 摄像 头
1的绘 图, 并将 视频传输到平 台 2使用投影机 显示, 投影仪 的 投影亮 度经过表面 反射, 进入摄像 头镜 头, 再反馈给平 台 l 。
将投 影仪与相机结合 到一 起,投影仪一相机系统 自然应运而 生 。其原理 图如 图 1 所 示。 本 文所介绍 的是基于 AR M9 2 0 T内核 的¥ 3 C 2 4 4 0 A L开发 板 为基 础的远程绘 图系统 的实现,该系统是基于嵌入武硬件
矩阵在图形图像 中大量使用 ,这 里也利用矩阵来表 示两个 图 像 的映射关系 。如果坐标形式是:
rstudio教程
rstudio教程RStudio是一种集成开发环境(IDE),专门用于R语言的编程和数据分析。
它提供了许多功能强大的工具和功能,使得R 编程变得更加容易和高效。
在本教程中,我们将介绍如何安装RStudio并进行基本的设置。
然后,我们将探索RStudio的主要界面和功能,并学习如何创建、编辑和运行R代码。
1. 安装RStudio:首先,我们需要下载并安装RStudio。
您可以从RStudio官方网站上找到适用于不同操作系统的安装程序,并按照安装向导的指示进行操作。
2. 设置RStudio:一旦安装完成,打开RStudio并进行一些基本设置。
您可以自定义RStudio的外观和布局,选择首选项,设置编程环境等。
3. RStudio界面:学习RStudio的界面布局是使用它的关键。
界面包括以下几个主要部分:- 控制台:用于执行R代码和查看输出结果。
- 脚本编辑器:用于编写和编辑R代码的区域。
- 工作区:显示当前的变量和数据对象。
- 文件和浏览器:用于管理文件和查看工作目录。
- 帮助和包管理器:获取R函数的帮助和安装/加载软件包。
4. 编写R代码:在RStudio的脚本编辑器中,您可以编写R代码。
代码可以包括数学运算、数据操作、图形绘制、统计分析等。
学习基本的R语法和函数是编写有效代码的关键。
5. 运行R代码:一旦编写好R代码,您可以将其在RStudio中运行。
您可以逐行运行代码,或者选择一部分代码进行批量运行。
控制台将显示执行结果和输出。
6. 数据可视化:RStudio还提供了许多图形绘制功能,可以帮助您将数据可视化。
通过使用R的绘图函数和图形包,您可以创建各种类型的图表、图像和图形。
7. 导入和导出数据:RStudio支持多种数据导入和导出格式。
您可以使用R代码导入和处理各种数据文件,如CSV、Excel、SQL数据库等。
同样,您也可以将处理后的结果导出为不同格式的文件。
8. R包管理:R包是R语言开发的插件,用于扩展R的功能。
极坐标如何画图形
极坐标如何画图形在数学和几何学中,极坐标系统是一种描述平面上点的坐标系统。
与直角坐标系不同,极坐标是通过径向距离和角度来定位点的位置。
通过使用极坐标系统,我们可以绘制出各种形状,包括圆、椭圆、螺线等等。
本文将介绍如何使用极坐标系统来画出不同的图形。
在极坐标系统中,点的位置由两个数值确定:极径(r)和极角(θ)。
极径表示点到原点的距离,极角表示点与极坐标中的极轴的夹角。
极径一般为正数,而极角可以是任意实数。
在极坐标中,原点的位置通常是坐标系的中心。
下面我们来介绍一些常见的图形以及如何通过极坐标来绘制它们。
圆圆是最简单的一种图形,在极坐标系统中可以很容易地用方程来表示。
对于任意一个半径为 r 的圆,其极坐标方程为 r = constant。
这意味着,对于圆上的每个点,它们的极径保持不变。
而对于极角来说,可以取任意值。
因此,绘制一个圆只需要在一定范围内改变极角即可。
椭圆椭圆是另一种常见的图形,它类似于圆,但有轴长和轴短之分。
对于一个在极坐标系统中的椭圆,其极坐标方程为:r = (a * b) / sqrt((b * cos(θ))² + (a * sin(θ))²)其中,a 和 b 分别代表椭圆的长轴和短轴。
通过改变极角的取值范围,我们可以绘制出不同偏转角度的椭圆。
螺线螺线是一种非常有趣的图形,它可以由极坐标方程r = aθ(其中 a 是常数)来描述。
通过调整常数 a 的值,我们可以改变螺旋线的形态。
当 a 为正数时,螺线将从原点开始逐渐向外扩展;当 a 为负数时,螺线将从原点开始向内缩小。
绘制图形的步骤要使用极坐标系统来绘制图形,我们可以按照以下步骤进行操作:1.创建绘图环境和坐标系;2.定义图形的极坐标方程;3.遍历极角的取值范围,并计算出对应的极径;4.将计算得到的极坐标点转换为直角坐标系中的点;5.根据转换后得到的点绘制图形;6.设置图形的样式、颜色等属性;7.保存和展示绘制的图形。
R语言是什么R语言简介
R语⾔是什么R语⾔简介⽬录1、什么是R语⾔?2、R语⾔能⼲什么?3、R语⾔有什么优势?补充5、为什么使⽤R ?6、R语⾔学习路线图7、R语⾔参考资料R是由Ross Ihaka和Robert Gentleman在1993年开发的⼀种编程语⾔,R拥有⼴泛的统计和图形⽅法⽬录。
它包括机器学习算法、线性回归、时间序列、统计推理等。
⼤多数R库都是⽤R编写的,但是对于繁重的计算任务,最好使⽤C、c++和Fortran代码。
R不仅在学术界很受欢迎,很多⼤公司也使⽤R编程语⾔,包括Uber、⾕歌、Airbnb、Facebook等。
⽤R进⾏数据分析需要⼀系列步骤:编程、转换、发现、建模和交流结果R 语⾔是为数学研究⼯作者设计的⼀种数学编程语⾔,主要⽤于统计分析、绘图、数据挖掘。
如果你是⼀个计算机程序的初学者并且急切地想了解计算机的通⽤编程,R 语⾔不是⼀个很理想的选择,可以选择 Python、C 或Java。
R 语⾔与 C 语⾔都是贝尔实验室的研究成果,但两者有不同的侧重领域,R 语⾔是⼀种解释型的⾯向数学理论研究⼯作者的语⾔,⽽ C 语⾔是为计算机软件⼯程师设计的。
R 语⾔是解释运⾏的语⾔(与 C 语⾔的编译运⾏不同),它的执⾏速度⽐ C 语⾔慢得多,不利于优化。
但它在语法层⾯提供了更加丰富的数据结构操作并且能够⼗分⽅便地输出⽂字和图形信息,所以它⼴泛应⽤于数学尤其是统计学领域。
1、什么是R语⾔?R是⽤于统计分析、绘图的语⾔和操作环境。
R是属于GNU系统的⼀个⾃由、免费、开源的软件,它是⼀个⽤于统计计算和统计制图的优秀⼯具。
R语⾔是主要⽤于统计分析、绘图的语⾔和操作环境。
R本来是由来⾃新西兰奥克兰⼤学的Ross Ihaka和Robert Gentleman 开发。
(也因此称为R)现在由“R开发核⼼团队”负责开发。
R是基于S语⾔的⼀个GNU项⽬,所以也可以当作S语⾔的⼀种实现,通常⽤S 语⾔编写的代码都可以不作修改的在R环境下运⾏。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.1grid.rect(gp=gpar(col="gray"))grid.circle(name="circles", x=seq(0.1, 0.9, length=40), y=0.5 + 0.4*sin(seq(0, 2*pi, length=40)),r=abs(0.1*cos(seq(0, 2*pi, length=40))))grid.edit("circles",gp=gpar(col=gray(c(1:20*0.04, 20:1*0.04)))) grid.remove("circles")7.2grid.rect(gp=gpar(col="gray"))suffix <- c("even", "odd")for (i in 1:8)grid.circle(name=paste("circle.", suffix[i %% 2 + 1], sep=""),r=(9 - i)/20,gp=gpar(col=NA, fill=gray(i/10)))grid.edit("circle.odd", gp=gpar(fill="gray10"),global=TRUE)grid.edit("circle", gp=gpar(col="gray", fill="gray90"),grep=TRUE, global=TRUE)7.3labels <- c("\"xaxis1\"\nxaxis gTree", "\"major\"\nlines grob", "\"ticks\"\nlines grob", "\"labels\"\ntext grob") names <- c("", "major", "ticks", "labels")boxheight <- unit(2.5, "line")boxwidth <- unit(1.2, "in")pushViewport(viewport(layout=yout(2, 3)))pushViewport(viewport(layout.pos.row=1, layout.pos.col=2))grid.text(labels[1])grid.lines(unit(0.5, "npc") + unit.c(-0.5*boxwidth, 0.5*boxwidth), 0.5, gp=gpar(col="gray"))grid.roundrect(height=boxheight,width=boxwidth, # 1.2*stringWidth(labels[1]),r=unit(2, "mm"),gp=gpar(fill=NA))popViewport()pushViewport(viewport(layout.pos.row=2, layout.pos.col=1))grid.text(labels[2])grid.lines(unit(0.5, "npc") + unit.c(-0.5*boxwidth, 0.5*boxwidth), 0.5, gp=gpar(col="gray"))grid.roundrect(height=boxheight,width=boxwidth, # 1.2*stringWidth(labels[2]),r=unit(2, "mm"),gp=gpar(fill=NA))popViewport()pushViewport(viewport(layout.pos.row=2, layout.pos.col=2))grid.text(labels[3])grid.lines(unit(0.5, "npc") + unit.c(-0.5*boxwidth, 0.5*boxwidth), 0.5, gp=gpar(col="gray"))grid.roundrect(height=boxheight,width=boxwidth, # 1.2*stringWidth(labels[3]),r=unit(2, "mm"),gp=gpar(fill=NA))popViewport()pushViewport(viewport(layout.pos.row=2, layout.pos.col=3))grid.text(labels[4])grid.lines(unit(0.5, "npc") + unit.c(-0.5*boxwidth, 0.5*boxwidth), 0.5, gp=gpar(col="gray"))grid.roundrect(height=boxheight,width=boxwidth, # 1.2*stringWidth(labels[4]),r=unit(2, "mm"),gp=gpar(fill=NA))popViewport()pushViewport(viewport(layout.pos.row=1, layout.pos.col=2))grid.move.to(x=0.5, y=unit(0.5, "npc") - 0.5*boxheight) popViewport()pushViewport(viewport(layout.pos.row=2, layout.pos.col=1))grid.line.to(x=0.5, y=unit(0.5, "npc") + 0.5*boxheight,arrow=arrow(angle=10, length=unit(3, "mm"))) popViewport()pushViewport(viewport(layout.pos.row=1, layout.pos.col=2))grid.move.to(x=0.5, y=unit(0.5, "npc") - 0.5*boxheight) popViewport()pushViewport(viewport(layout.pos.row=2, layout.pos.col=2))grid.line.to(x=0.5, y=unit(0.5, "npc") + 0.5*boxheight,arrow=arrow(angle=10, length=unit(3, "mm"))) popViewport()pushViewport(viewport(layout.pos.row=1, layout.pos.col=2))grid.move.to(x=0.5, y=unit(0.5, "npc") - 0.5*boxheight) popViewport()pushViewport(viewport(layout.pos.row=2, layout.pos.col=3))grid.line.to(x=0.5, y=unit(0.5, "npc") + 0.5*boxheight,arrow=arrow(angle=10, length=unit(3, "mm"))) popViewport()7.4grid.rect(gp=gpar(col="gray"))pushViewport(viewport(just="bottom", gp=gpar(cex=0.7)))grid.xaxis(name="axis1", at=1:4/5)grid.ls()grid.edit("axis1", at=1:3/4)grid.edit(gPath("axis1", "labels"), rot=45)popViewport()7.5tg <- textGrob("sample text")rg <- rectGrob(width=1.1*grobWidth(tg),height=1.3*grobHeight(tg))boxedText <- gTree(children=gList(tg, rg))pushViewport(viewport(layout=yout(1, 7,heights=unit(1.25, "in"), widths=unit(rep(c(1, 1.25), length=7),rep(c("null", "in"),length=7)))))pushViewport(viewport(layout.pos.col=2, gp=gpar(fill=NA)))grid.rect(gp=gpar(col="gray", fill=NA))grid.draw(boxedText)popViewport()pushViewport(viewport(layout.pos.col=4, gp=gpar(fill=NA)))grid.rect(gp=gpar(col="gray", fill=NA))grid.draw(editGrob(boxedText, gp=gpar(col="gray")))popViewport()pushViewport(viewport(layout.pos.col=6, gp=gpar(fill=NA)))grid.rect(gp=gpar(col="gray", fill=NA))grid.draw(editGrob(boxedText, vp=viewport(angle=45),gp=gpar(fontsize=18)))popViewport()popViewport()7.6label <- textGrob("A\nPlot\nLabel ",x=0, just="left")x <- seq(0.1, 0.9, length=50)y <- runif(50, 0.1, 0.9)gplot <-gTree(children=gList(rectGrob(gp=gpar(col="gray60",fill="white")),linesGrob(x, y),pointsGrob(x, y, pch=16,size=unit(1.5, "mm"))),vp=viewport(width=unit(1, "npc") - unit(5, "mm"),height=unit(1, "npc") - unit(5, "mm")))layout <- yout(1, 2,widths=unit(c(1, 1),c("null", "grobwidth"), list(NULL, label)))grid.rect(gp=gpar(col="gray60", fill="gray90")) pushViewport(viewport(layout=layout))pushViewport(viewport(layout.pos.col=2))grid.draw(label)popViewport()pushViewport(viewport(layout.pos.col=1))grid.draw(gplot)popViewport(2)7.7tg1 <- textGrob("Sample")rg1 <- rectGrob(x=rep(0.5, 2),width=1.1*grobWidth(tg1),height=1.3*grobHeight(tg1),gp=gpar(col=c("gray60", "white"),lwd=c(3, 1)))pushViewport(viewport(layout=yout(1, 7,heights=unit(1.25, "in"), widths=unit(rep(c(1, 1.25), length=7),rep(c("null", "in"),length=7)))))pushViewport(viewport(layout.pos.col=2, gp=gpar(fill=NA)))grid.rect(gp=gpar(col="gray", fill=NA))grid.draw(tg1)grid.draw(rg1)popViewport()pushViewport(viewport(layout.pos.col=4, gp=gpar(fill=NA)))grid.rect(gp=gpar(col="gray", fill=NA))pushViewport(viewport(gp=gpar(cex=2)))grid.draw(tg1)grid.draw(rg1)popViewport()popViewport()pushViewport(viewport(layout.pos.col=6, gp=gpar(fill=NA)))grid.rect(gp=gpar(col="gray", fill=NA))pushViewport(viewport(gp=gpar(cex=2)))grid.draw(tg1)popViewport()grid.draw(rg1)popViewport()popViewport()7.8tg1 <- textGrob("Sample", name="tg1")rg1 <- rectGrob(width=1.1*grobWidth("tg1"),height=1.3*grobHeight("tg1"),gp=gpar(col="gray60", lwd=3))rg2 <- rectGrob(width=1.1*grobWidth(tg1),height=1.3*grobHeight(tg1),gp=gpar(col="white"))grid.rect(gp=gpar(col="gray"))pushViewport(viewport(gp=gpar(cex=1.5, fill=NA)))grid.draw(tg1)grid.draw(rg1)grid.draw(rg2)grid.edit("tg1", grep=TRUE, global=TRUE,label="Different text")popViewport()7.9grid.rect(gp=gpar(col="gray"))pushViewport(viewport(gp=gpar(fill=NA)))grid.circle(.25, .5, r=unit(1, "mm"),gp=gpar(fill="black"))grid.text("A label", .75, .5)grid.rect(.75, .5,width=stringWidth("A label") + unit(2, "mm"), height=unit(1, "line"),name="labelbox")grid.segments(.25, .5,grobX("labelbox", 180), .5,arrow=arrow(angle=15, type="closed"),gp=gpar(fill="black"))7.10pushViewport(viewport(gp=gpar(fill=NA)))vptop <- viewport(width=.9, height=.4, y=.75,name="vptop")vpbot <- viewport(width=.9, height=.4, y=.25,name="vpbot")pushViewport(vptop)upViewport()pushViewport(vpbot)upViewport()grid.rect(vp="vptop")grid.lines(1:50/51, runif(50), vp="vptop")grid.rect(vp="vpbot")grid.lines(1:50/51, runif(50), vp="vpbot")grid.null(x=.2, y=.95, vp="vptop", name="tl")grid.null(x=.4, y=.95, vp="vptop", name="tr")grid.null(x=.2, y=.05, vp="vpbot", name="bl")grid.null(x=.4, y=.05, vp="vpbot", name="br")grid.polygon(unit.c(grobX("tl", 0),grobX("tr", 0),grobX("br", 0),grobX("bl", 0)),unit.c(grobY("tl", 0),grobY("tr", 0),grobY("br", 0),grobY("bl", 0)),gp=gpar(col="gray", lwd=3))7.11grid.rect(gp=gpar(col="gray"))grid.circle(r=0.3, gp=gpar(fill="gray80"),name="mycircle")grid.edit("mycircle", gp=gpar(lwd=5))grid.edit("mycircle", gp=gpar(lty="dashed"))7.12angle <- seq(0, 2*pi, length=21)[-21]x <- cos(angle)y <- sin(angle)trellis.par.set(theme = canonical.theme("postscript", color=FALSE)) print(xyplot(y ~ x, aspect=1,xlab="displacement",ylab="velocity"))grid.edit("[.]xlab$", grep=TRUE,x=unit(1, "npc"), just="right",gp=gpar(fontfamily="mono"))grid.edit("[.]ylab$", grep=TRUE,y=unit(1, "npc"), just="right",gp=gpar(fontfamily="mono"))7.13mtcars2 <- mtcarsmtcars2$trans <- factor(mtcars$am,levels=0:1,labels=c("automatic", "manual")) mtcars2$am <- NULLmtcars2$vs <- NULLmtcars2$drat <- NULLmtcars2$carb <- NULLupdate_geom_defaults("smooth", aes(color="black"))print(ggplot(mtcars2, aes(x=disp, y=mpg)) +geom_point() +geom_smooth(method=lm))downViewport("panel.3-4-3-4")sline <- grid.get(gPath("smooth", "polyline"),grep=TRUE)grid.segments(.7, .8,grobX(sline, 45), grobY(sline, 45),arrow=arrow(angle=10, type="closed"),gp=gpar(fill="black"))grid.text("line of best fit", .71, .81,just=c("left", "bottom"))。