逐步绘图
R内置的基本绘图包graohics绘图逻辑:打开一个绘图板,制定绘图区,逐步添加各种图形元素。
以下为例:
# Scatterplot
x <- c(0.5, 2, 4, 8, 12, 16)
y1 <- c(1, 1.3, 1.9, 3.4, 3.9, 4.8)
y2 <- c(4, .8, .5, .45, .4, .3)
# 开始绘图
plot.new() #要绘制一个新的plot
plot.window(range(x), c(0, 6)) #要绘制的plot的范围
lines(x, y1)
lines(x, y2)
points(x, y1, pch=16, cex=2) #绘制点,pch,cex等为点的属性,大小形状
points(x, y2, pch=21, bg="white", cex=2)
axis(1, at=seq(0, 16, 4)) #绘制底部坐标轴,以及坐标轴上的断点
axis(2, at=seq(0, 6, 2)) #绘制左边坐标轴
axis(4, at=seq(0, 6, 2)) #绘制右边坐标轴
mtext("Travel Time (s)", side=1, line=2, cex=0.8)
mtext("Responses per Travel", side=2, line=2, las=0, cex=0.8)
mtext("Responses per Second", side=4, line=2, las=0, cex=0.8)
text(4, 5, "Bird 131")
其中
plot.new() #新建一个绘图
plot.window() #位置设定,实际上也是设置了坐标系。
接下来的 points, lines, axis,mtext, text 都是往这个图形上添加元素。
高级/低级绘图函数
graphics的绘图函数可以分为两类,一种是低级绘图函数,这类函数用于往已经存在的plot上添加元素,如上图中points,lines,axis等,都是往已经存在的图形上添加 底层的图像元素,每个图形元素可以设置自己的属性,如points()中可以设置点的形状大小等。这些函数也可以成为图形元素函数。
另一类图像函数是高级绘图函数,如boxplot, 使用这类函数时传入正确的数据会绘制特定的图形,高级函数会重新打开一个空白绘图板并绘图。
用高级函数绘图后,也可以使用低级绘图函数进一步添加其他图形元素。
boxplot(pressure$temperature) #高级绘图函数
text(1,200,'test') #低级绘图函数往已有图形上添加图形元素
par参数
除了上述绘制的图形外,往往还需要修改很多其他默认设置,如图形边距,前景色,默认字体大小等。或者这些可成称之为图形主题。
par() #返回图形的默认设置,有72个参数可以设置。
par(mar= ,font= ) #可以更改默认的mar,font选项,类似,默认的参数均可这样修改。
通过par更改是全局更改,如果在text(font= )等也设置了font可以认为是局部设置。
box(canvas),figure,plot概念
canvas是整个绘图纸张,如一张A4纸
figure是一张组合图,一张图可以包括一个或者多个plot
plot值具体的某个图。
理解这些概念,是图形组合的基础。
图形组合
par中可以设置绘制图形组合
如
par(mfrow=c(2,1),mar=c(4,4,4,4))
绘图设备
图形可视化需要底层支持,如绘制一个pdf/tiff, 后台要先准备好绘制pdf/tiff的工具,这个准备好的pdf/tiff后台支持,就是所谓的device。就好像你是个画家,你需要画油画,那么你的仆人会先给你准备好画油画用的布板等,你需要画简笔画,仆人就简单给你准备个普通写字台和A4纸张。
pdf('r-plot.pdf') #打开一个pdf绘图设备,并设置为当前设备。注意,该设备是不可见的,非交互的,此后的图形元素都是在这个图形设备上绘图的。
...
dev.off() #关闭当前绘图设备。绘制完毕后,需关闭当前设备。可以这样理解:绘图是在内存ram绘图的,结束后需要将内存数据保存到硬盘上,然后才能在当前文件下找到图r-plot.pdf。
默认的绘图设备
Rstudio, Rgui默认激活了一个可视化的,交互的绘图设备,默认编号是1,可以认为是常开的,交互的,也就是默认Rstudio右下角的plot区域图形。