《R语言实战》学习笔记第三章

图形初阶

3.1 使用图形

P43例子,使用与书中attach()函数不同的with()函数:

> with(mtcars,{
+ plot(wt,mpg)
+ abline(lm(mpg~wt))
+ title("Regression of MPG on Weight")
+ })

得到下图

《R语言实战》学习笔记第三章_第1张图片

在开始绘图之前,可以先执行语句将图形保存到当前工作目录中

pdf("mygraph.pdf")
> with(mtcars,{
+ plot(wt,mpg)
+ abline(lm(mpg~wt))
+ title("Regression of MPG on Weight")
+ })
dev.off()
#第一行代码中pdf()可以换成是想要的图片格式

书中P46例子

> dose <- c(20,30,40,45,60)
> drugA <- c(16,20,27,40,60)
> drugB <- c(15,18,25,31,40)
> plot(dose,drugA,type = "b")

得到折线图

《R语言实战》学习笔记第三章_第2张图片

 3.3 图形参数

可以使用par()函数来设定图形的各种参数。

*注意:par()函数中的所有参数值除非被再次修改,否则直到会话结束时一直有效!

参数no.readonly=TRUE 可以添加一个可以修改当前图形参数的参数列表

> par(no.readonly = TRUE)
$xlog
[1] FALSE

$ylog
[1] FALSE

$adj
[1] 0.5

$ann
[1] TRUE

$ask
[1] FALSE

$bg
[1] "white"

$bty
[1] "o"

$cex
[1] 1

$cex.axis
[1] 1

$cex.lab
[1] 1

$cex.main
[1] 1.2

$cex.sub
[1] 1

$col
[1] "black"

$col.axis
[1] "black"

$col.lab
[1] "black"

$col.main
[1] "black"

$col.sub
[1] "black"

$crt
[1] 0

$err
[1] 0

$family
[1] ""

$fg
[1] "black"

$fig
[1] 0 1 0 1

$fin
[1] 6.562500 5.552083

$font
[1] 1

$font.axis
[1] 1

$font.lab
[1] 1

$font.main
[1] 2

$font.sub
[1] 1

$lab
[1] 5 5 7

$las
[1] 0

$lend
[1] "round"

$lheight
[1] 1

$ljoin
[1] "round"

$lmitre
[1] 10

$lty
[1] "solid"

$lwd
[1] 1

$mai
[1] 1.0 1.6 0.8 0.4

$mar
[1] 5 8 4 2

$mex
[1] 1

$mfcol
[1] 1 1

$mfg
[1] 1 1 1 1

$mfrow
[1] 1 1

$mgp
[1] 3 1 0

$mkh
[1] 0.001

$new
[1] FALSE

$oma
[1] 0 0 0 0

$omd
[1] 0 1 0 1

$omi
[1] 0 0 0 0

$pch
[1] 1

$pin
[1] 4.562500 3.752083

$plt
[1] 0.2438095 0.9390476 0.1801126 0.8559099

$ps
[1] 12

$pty
[1] "m"

$smo
[1] 1

$srt
[1] 0

$tck
[1] NA

$tcl
[1] -0.5

$usr
[1] 18.40 61.60 14.24 61.76

$xaxp
[1] 20 60  4

$xaxs
[1] "r"

$xaxt
[1] "s"

$xpd
[1] FALSE

$yaxp
[1] 20 60  4

$yaxs
[1] "r"

$yaxt
[1] "s"

$ylbias
[1] 0.2

以上参数为drug~dose折线图中可以修改的参数

如果希望参数仅对当前的图形有效,则可以在plot()函数中直接键入option=value

常用的符号和线条类型参数(书P48)
参数 描述
pch point character;绘制的符号
cex 指定符号的大小,亚类有cex.axis, cex.lab, cex.main, cex.sub等
lty line type;线条的类型,共有六种,输入lty=1为实线
lwd

line width;线条的宽度,默认值为1

col

color;一些函数可以接受col选项并且自动循环使用;若要指定符号颜色,用法与cex相同;fg前景色,bg背景色

颜色可以通过颜色下标,颜色名称(加引号),十六进制颜色值,RGB值或者HSV值指定

font 指定字体;1=常规,2=粗体,3=斜体,4=粗斜体,5=符号字体;若要指定符号字体,用法与cex相同
控制图形尺寸和边界的常用参数(书P52)
参数 描述
pin 英寸表示的宽和高
mai 数值表示的边界大小,顺序为“下”,“左”,“上”,“右”,单位为英寸
mar 数值表示的边界大小,顺序为“下”,“左”,“上”,“右”,单位为英分,默认为c(5,4,4,2)+0.1

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

常用坐标轴和文本定义函数
参数 描述
main 标题
sub 副标题
xlab,ylab 坐标轴标签
xlim,ylim 坐标轴范围

标题

使用函数title()添加标题和参数。

坐标轴

使用函数axis()添加坐标轴参数。

坐标轴选项
选项 描述
side 整数,描述坐标轴在哪边绘制,1=下,2=左,3=上,4=右
at 数值型向量,表示需要绘制刻度线的位置;at=x
labels 字符型向量,表示在刻度线旁边的文字标签
pos 坐标轴绘制位置的坐标(即与另一条坐标轴相交的位置的值)
las 标签平行于(=0)还是垂直于(=2)坐标轴
tck 刻度线的长度,默认为-0.01,负值在坐标轴外侧,正值在内侧

参考线

使用函数abline()添加参考线,格式:

abline(h=yvalues,v=xvalues)

图例

使用格式为:

legend(location, title, legend,...)

 

图例选项
选项 描述
location

1.可以通过给定的x,y轴坐标表示

2.可以执行locator(1)使用鼠标绘制图例

3.使用位置关键词,例如bottom,top,topleft等,如果使用关键词则可以使用inset=表示图例像内侧移动的距离

title 图例的标题,字符串
legend 标签组成,字符串

文本标注

文本标注的函数与选项
text() 向图形的内部添加文字;text (location, "text to the place", pos, ....)例text (3,3, "example"),3,3为添加文字的横纵坐标

mtext()

向图形的四个边界之一添加文字;mtext ("text to the place", side, line=n,...) line=用来外移或者内移文本,line为负数则内移

3.5 图形组合

par()函数中使用mfrow=c() (按行填充)或者mfcol=c()(按列填充),可以在一张图中组合多张图。

使用与书中attach函数不同的with函数举例:

> opar <- par(no.readonly = TRUE)#将默认设置存为opar
> with(mtcars,{
+ par(mfrow=c(3,1))#创建三张图的组合图,以三行的形式排布
+ hist(mpg)
+ hist(wt)
+ hist(disp)
+ })
> par(opar)#恢复图形默认设置

得到图:

《R语言实战》学习笔记第三章_第3张图片

 除了par (mfrow=c())以外,还可以使用layout()函数对图进行组合。

使用with函数举例:

> with(mtcars,{
+ layout(matrix(c(1,1,2,3),2,2,byrow = TRUE))#layout中设置了一个按照行排布的2行2列的矩阵,相同数字表示其中某张图的所在位置
+ hist(wt)
+ hist(mpg)
+ hist(disp)
+ })

得到图

《R语言实战》学习笔记第三章_第4张图片

 *注意:layout()函数使用矩阵的形式排布图形

还可以在layout()函数中对各个图形的宽widths=c()和高heights=c()进行设置

更加精细的图片排布方式

par()函数中使用fig=c() 选项来布局各个图片的位置

fig=c()选项的作用原理:

《R语言实战》学习笔记第三章_第5张图片

 fig=c(x1,x2,y1,y2)为数值向量,其表示的小图在整个图中的布局以0-1的范围表示

于是,可以使用with()函数,fig=选项作出下图

> with(mtcars,{
  + par(fig=c(0,0.8,0,0.8))
  + plot(wt,mpg,xlab = "Miles per Gallon",ylab = "Car Weight")
  + par(fig=c(0,0.8,0.42,1),new=TRUE)#fig=选项会默认生成一副新图,所以在添加一幅图到现有的图上时,需要加new=TRUE
  + boxplot(wt,horizontal = TRUE,axes=FALSE)
  + par(fig=c(0.55,1,0,0.8),new=TRUE)
  + boxplot(mpg,axes=FALSE)
  + mtext("Enahnced Scatterplot",side=3,outer=TRUE,line = -3)#line=负值是向内移动,-后的数字越大越贴近图片
#outer: use outer margins if available.
  + })

对于本人电脑,fig=c()的参数有所调整

《R语言实战》学习笔记第三章_第6张图片

 

你可能感兴趣的:(r语言,开发语言)