P43例子,使用与书中attach()函数不同的with()函数:
> with(mtcars,{
+ plot(wt,mpg)
+ abline(lm(mpg~wt))
+ title("Regression of MPG on Weight")
+ })
得到下图
在开始绘图之前,可以先执行语句将图形保存到当前工作目录中
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")
得到折线图
可以使用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
参数 | 描述 |
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相同 |
参数 | 描述 |
pin | 英寸表示的宽和高 |
mai | 数值表示的边界大小,顺序为“下”,“左”,“上”,“右”,单位为英寸 |
mar | 数值表示的边界大小,顺序为“下”,“左”,“上”,“右”,单位为英分,默认为c(5,4,4,2)+0.1 |
参数 | 描述 |
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为负数则内移 |
在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)#恢复图形默认设置
得到图:
除了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)
+ })
得到图
还可以在layout()函数中对各个图形的宽widths=c()和高heights=c()进行设置
在par()函数中使用fig=c() 选项来布局各个图片的位置
fig=c()选项的作用原理:
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()的参数有所调整