《R语言实战》读书笔记--第三章 图形初阶(二)

时间:2021-08-25 11:55:13

3.4添加文本、自定义坐标轴和图例

很多作图函数可以设置坐标轴和文本标注。比如标题、副标题、坐标轴标签、坐标轴范围等。需要注意的是并不是所有的绘图函数都有上述的参数,需要进行验证。可以将一些默认的参数进行移除,用ann = FALSE来操作。

3.4.1标题

title函数。

title(main = NULL, sub = NULL, xlab = NULL, ylab = NULL,
line = NA, outer = FALSE, ...)
#上面的outer是指标题是否在图形边界之外,也就是里的图形较远
#上面的…可以设置其他的参数,比如标题颜色等,这里的参数参考
#par的参数设置,需要注意的是,要将col等写成,col.main,col.lab
#cex.lab等,这些具体的函数在par参数中可以都看得到。另外,
#adj controls the justification of the titles. xpd can be used to set the clipping region: this defaults to the figure #region unless outer = TRUE, otherwise the device region and can only be increased. mgp controls the #default placing of the axis titles.
#上面这些描述还不太懂,不过par参数中也有说明。

下面是一个例子:

x <- seq(-, , len = )
y <- cbind(sin(x), cos(x))
matplot(x, y, type = "l", xaxt = "n",
main = expression(paste(plain(sin) * phi, " and ",
plain(cos) * phi)),
ylab = expression("sin" * phi, "cos" * phi), # only 1st is taken
xlab = expression(paste("Phase Angle ", phi)),
col.main = "blue")
axis(, at = c(-pi, -pi/, , pi/, pi),
labels = expression(-pi, -pi/, , pi/, pi))
abline(h = , v = pi/ * c(-,), lty = , lwd = ., col = "gray70")

下面说几个语句,上面的几个expression语句是一种数学表达式的专门表达,用demo(plotmath)可以看到不少例子。expression函数可以实现将字符和特殊符号写在一起的功能。

3.4.2坐标轴

axis函数可以自定义坐标轴。

axis(side, at = NULL, labels = TRUE, tick = TRUE, line = NA,
pos = NA, outer = FALSE, font = NA, lty = "solid",
lwd = , lwd.ticks = lwd, col = NULL, col.ticks = NULL,
hadj = NA, padj = NA, ...)

其中的参数含义下表课可见:

《R语言实战》读书笔记--第三章 图形初阶(二)

在自定义坐标州轴的情况下,应该禁用polt等函数自动生成的坐标轴。参数axes=FALSE可以禁用所有坐标轴,包括坐标轴框架等,除非添加了参数frame.plot = TRUE。参数xaxt = “n”和yaxt = “n”分别禁用x、y轴,只不过留下框架线。下面是一个例子,展示前面所述的语句和参数。

x <- c(:)
y <- x
z <- /x opar <- par(no.readonly = TRUE) par(mar=c(,,,) + 0.1) plot(x,y,type = "b",
pch = ,col = "red",
yaxt = "n",lty = ,ann = FALSE) lines(x,z,type="b",pch = ,col = "blue",lty = ) axis(,at = x,labels = x,col.axis = "red",las = ) axis(,at = z,labels=round(z,digits = ),
col.axis = "blue",las = ,cex.axis = 0.7,tck = -0.01) mtext("y = 1/x",side = ,line = ,cex.lab = ,las = ,col = "blue") title("An Example of Creative Axes",
xlab = "X values",
ylab = "Y=X") par(opar)

上面的程序中的各个参数基本都ok了。注意,lines函数自动画在原来的图上。mtext函数用于在图形边界添加文本。后面会讲到。下面是图形:

《R语言实战》读书笔记--第三章 图形初阶(二)

次要刻度线

书上讲了一个叫次要刻度线的概念。在Hmisc包里面有minor.tick函数。后面会有例子的。

3.4.3参考线

函数abline()可以为图形添加参考线。

abline(a = NULL, b = NULL, h = NULL, v = NULL, reg = NULL,
coef = NULL, untf = FALSE, ...)

上面a是常数项,b是斜率,h是水平线,v是竖直线。

3.4.4图例

用legend函数为图形添加图例:

legend(x, y = NULL, legend, fill = NULL, col = par("col"),
border = "black", lty, lwd, pch,
angle = , density = NULL, bty = "o", bg = par("bg"),
box.lwd = par("lwd"), box.lty = par("lty"), box.col = par("fg"),
pt.bg = NA, cex = , pt.cex = cex, pt.lwd = lwd,
xjust = , yjust = , x.intersp = , y.intersp = ,
adj = c(, 0.5), text.width = NULL, text.col = par("col"),
text.font = NULL, merge = do.lines && has.pch, trace = FALSE,
plot = TRUE, ncol = , horiz = FALSE, title = NULL,
inset = , xpd, title.col = text.col, title.adj = 0.5,
seg.len = )

参数好多……

《R语言实战》读书笔记--第三章 图形初阶(二)

《R语言实战》读书笔记--第三章 图形初阶(二)

上面的图转自:http://blog.sina.com.cn/s/blog_5de124240101pzqb.html

x,y是图例左上角的坐标。其他基本知道,用到的时候查表。下面是一个例子。

dose <- c(,,,,)
drugA <- c(,,,,)
drugB <- c(,,,,) opar <- par(no.readonly = TRUE) par(lwd = ,cex = 1.5,font.lab = ) plot(dose,drugA,type = "b",
pch = ,lty = ,col = "red",ylim = c(,),
main = "Drug A vs. Drug B",
xlab = "Drug Dosage",ylab = "Drug Response") lines(dose,drugB,type="b",
pch = ,lty = ,col = "blue") abline(h = c(),lwd = 1.5,lty = ,col = "gray") library(Hmisc)
minor.tick(nx = ,ny = ,tick.ratio = 0.5) legend("topleft",inset = .,title = "Drug Type",c("A","B"),
lty = c(,),pch = c(,),col = c("red","blue"),
       cex = 0.5) #最后这个参数是为了做对比图用的,用来设置图例框的相对大小

par(opar)

下面是结果,顺便观察了有无“次刻度线”的区别。

《R语言实战》读书笔记--第三章 图形初阶(二)

ok,就是将原来的刻度进行了细化。

3.4.5文本标注

用text和mtext函数向图形中添加文本。text()是为绘图区域内添加,而mtext()函数,向图形四个边界之一添加文本。分别为:

text(x, y = NULL, labels = seq_along(x), adj = NULL,#x,y是文本坐标,labels是内容,adj是[0,1]之间的
pos = NULL, offset = 0.5, vfont = NULL,#一到两个值,是对labels的调整,vfont与Hershey vector
cex = , col = NULL, font = NULL, ...)#fonts 字体组有关系 mtext(text, side = , line = , outer = FALSE, at = NA,
adj = NA, padj = NA, cex = NA, col = NA, font = NA, ...)

下面是text()和mtext()函数的参数,

《R语言实战》读书笔记--第三章 图形初阶(二)

text函数除了用来标注文本之外,还可以标示图形中的点。这样的话,x和y分别就是点的横纵坐标向量,labels就是要标注文字,这三个量的长度应该是一样的。可以添加参数,family来规定输入的字体。

数字标注

可以为图形添加数学符号和公式。可以查看help(plotmath),当然最好的方式是执行demo(plotmath)。demo中可以直接查看语句,是一些expression语句组成的,这个plotmath很强大,截两张图感受下:

《R语言实战》读书笔记--第三章 图形初阶(二)《R语言实战》读书笔记--第三章 图形初阶(二)

几乎可以标注所有类型的数学表达。

3.5图形的组合

讨论几幅图组合成一幅图的情况,可以想像这是非常有用的。

par函数中的参数 nfrow = c(nrows,ncols)用来指定同时画出几幅图,nfcol可以按列设置。上面两幅图在一起的就是用这个参数设置的。

layout()函数后面参数为一个矩阵。比如 layout(matrix(c(1,1,2,3),2,2,byrow = TRUE))表示第一幅图在第一行,第二、三幅图在第二行。layout函数还可以指定两个参数,widths = ,heights = ,分别为宽度和高度向量,这是相对的高度和宽度。想要设置绝对高度党和宽度,需要用lcm()函数,单位为cm.像上面的例子,可以设置widths = c(3,1),heights = c(1,2).这两个参数实际上是对上面的矩阵的行列的比值的设置,即宽度是设置列宽的比,高度是行高的比。

见下图:

《R语言实战》读书笔记--第三章 图形初阶(二)

请记住,mtcars是datasets中的数据集,我找了好半天……

下面是一个例子,用来精细控制图形。

opar <- par(no.readonly = TRUE)
par(fig = c(,0.8,,0.8)) #这里的设置是规定画布的80%画下面图形
plot(mtcars$wt,mtcars$mpg,
xlab = "Miles Per Gallon",
ylab = "Car Weight")
par(fig = c(,0.8,0.55,),new = TRUE) #上方添加箱型图
boxplot(mtcars$wt,horizontal = TRUE,axes = FALSE)
par(fig = c(0.65,,,0.8),new = TRUE) #右下角添加箱型图
boxplot(mtcars$mpg,axes = FALSE) mtext("Enhanced Scatterplot",side = ,outer = TRUE,line = -)
par(opar)

《R语言实战》读书笔记--第三章 图形初阶(二)

上面的代码中,par参数,fig = c(x1,x2,y1,y2)是设置横向范围x1-x2,纵向为y1-y2,fig默认会打开新的窗口,所以在参数中设置 new = TRUE,需要说明的是,上面图形的位置是需要不断调整的。

本章只是画图的笼统的、范围较广的设置,后面的各章会有相对的图形个性设置。

《R语言实战》读书笔记--第三章 图形初阶(二)的更多相关文章

  1. 《R语言实战》读书笔记--第三章 图形初阶(一)

    3.1使用图形 可以使用pdf等函数将图形直接保存在文件中.在运用attach和detach函数的使用中经常出现错误,比如命名重复的问题,所以,应该尽量避免使用这两个函数. plot是一般的画图函数, ...

  2. R语言实战读书笔记&lpar;三&rpar;图形初阶

    这篇简直是白写了,写到后面发现ggplot明显更好用 3.1 使用图形 attach(mtcars)plot(wt, mpg) #x轴wt,y轴pgabline(lm(mpg ~ wt)) #画线拟合 ...

  3. R语言实战读书笔记&lpar;二&rpar;创建数据集

    2.2.2 矩阵 matrix(vector,nrow,ncol,byrow,dimnames,char_vector_rownames,char_vector_colnames) 其中: byrow ...

  4. R语言实战读书笔记1—语言介绍

    第一章 语言介绍 1.1 典型的数据分析步骤 1.2 获取帮助 help.start() help("which") help.search("which") ...

  5. Spring3&period;x企业开发应用实战读书笔记 —— 第三章IoC容器概述

    声明:    本篇博客绝大多数内容为<Spring3.x企业开发应用实战>一书原内容,所有版权归原书作者所有!,仅供学习参考,勿作他用! 3.2 相关Java基础知识 Java语言允许通过 ...

  6. R语言实战读书笔记2—创建数据集&lpar;上&rpar;

    第二章 创建数据集 2.1 数据集的概念 不同的行业对于数据集的行和列叫法不同.统计学家称它们为观测(observation)和变量(variable) ,数据库分析师则称其为记录(record)和字 ...

  7. R语言实战读书笔记&lpar;八&rpar;回归

    简单线性:用一个量化验的解释变量预测一个量化的响应变量 多项式:用一个量化的解决变量预测一个量化的响应变量,模型的关系是n阶多项式 多元线性:用两个或多个量化的解释变量预测一个量化的响应变量 多变量: ...

  8. R语言实战读书笔记&lpar;五&rpar;高级数据管理

    5.2.1 数据函数 abs: sqrt: ceiling:求不小于x的最小整数 floor:求不大于x的最大整数 trunc:向0的方向截取x中的整数部分 round:将x舍入为指定位的小数 sig ...

  9. R语言实战读书笔记&lpar;四&rpar;基本数据管理

    4.2 创建新变量 几个运算符: ^或**:求幂 x%%y:求余 x%/%y:整数除 4.3 变量的重编码 with(): within():可以修改数据框 4.4 变量重命名 包reshape中有个 ...

随机推荐

  1. ajax&plus;表单验证&plus;验证码生成例子

    MainController.class.php <?php namespace AjaxYz\Controller; use Think\Controller; class MainContr ...

  2. Android学习笔记--Handler用法总结

    不错的例子:http://www.cnblogs.com/menlsh/archive/2013/06/07/3125341.html 转自:一叶知秋的博客 http://blog.sina.com. ...

  3. python 图形界面开发

    用python来开发图形界面,确实不是很方便,没有c#,Java,甚至VB来得容易.几个控件拖拽,然后响应事件. 用python写脚本,或者web service来处理一般工作,绰绰有余.但有的时候, ...

  4. Python自学笔记-列表生成式(来自廖雪峰的官网Python3)

    感觉廖雪峰的官网http://www.liaoxuefeng.com/里面的教程不错,所以学习一下,把需要复习的摘抄一下. 以下内容主要为了自己复习用,详细内容请登录廖雪峰的官网查看. 列表生成式 列 ...

  5. 笔记:Hibernate DML

    Hibernate 提供的HQL(Hibernate Query Language)语句也支持批量 update 和 delete 语法,语法格式如下: [UPDATE | DELETE] FROM ...

  6. &lbrack;Luogu 3901&rsqb;Difference

    Description Input Output Sample Input 4 2 1 2 3 2 1 3 2 4 Sample Output Yes No HINT 题解 莫队.加个标记数组维护该数 ...

  7. Rabbit五种消息队列学习(二) – 简单队列

    队列结构图 P:消息的生产者 C:消息的消费者 红色:队列 生产者将消息发送到队列,消费者从队列中获取消息. 测试 1.连接MQ public static Connection getConnect ...

  8. eclipse打jar包解决第三方依赖包

    在项目根目录下手动MANIFEST.MF(eclipse无法自动生成) MANIFEST.MF Manifest-Version: 1.0 Class-Path: lib/kafka-clients- ...

  9. 【xsy1012】KSHKM的基因工程 AC自动机DP

    题目大意:给你$n$个串$p_i$,最后再给一个串$s$(字符集均为A,C,G,T四个字符中的一个).问你串$s$最少要更改多少个字符(更改后的字符也只能是ACGT),才能满足s中不包含$p_i$$( ...

  10. fabric-ca-server

    fabric-ca-server start -b admin:adminpw -d --db.type mysql --db.datasource "root:rootpwd@tcp(17 ...