第三章 图形入门
本章概要
1 创建和保存图形
2 定义符号、线、颜色和坐标轴
3 文本标注
4 掌控图形维数
5 多幅图合在一起
本章所介绍内容概括如下。
一图胜千字,人们从视觉层更易获取和理解信息。
图形工作
R具有非常强大的绘图功能,看下面代码。
> attach(mtcars)
> plot(wt, mpg)
> abline(lm(mpg~wt))
> title("Regression of MPG on Weight")
> detach(mtcars)
效果图如图1所示。
图1:mtcars数据集中wt-mpg线性回归图
图形保存方法可以用RGUI完成或者写代码保存。例如把上图以pdf格式保存在D:/data目录下,代码如下:
> setwd("E:\\data")
> pdf("wt-mpg.pdf")
> attach(mtcars)
> plot(wt, mpg)
> abline(lm(mpg~wt))
> title("Regresssion of MPG on Weight")
> detach(mtcars)
>dev.off()
> dir()
一个简单实例
数据集,病人对两种药不同剂量的反映,如图2所示。
图2: 病人对两种药不同剂量的反映
程序清单
> dosage <- c(20, 30, 40, 45, 60)
> responseA <- c(16, 20, 27, 40, 60)
> responseB <- c(15, 18, 25, 31, 40)
> plot(dosage, responseA, type="b")
效果图如图3所示。
图3: 不同剂量下,病人对药A的反映图
图像化参数
通过图形化参数定义一个图形的特征(字体、颜色、标题、坐标轴)。利用par()函数指定图形化参数。或者把这些参数至于绘图函数中。现基于两种不同的方式使用图形化参数。
方式一:par()函数
> opar <- par(no.readonly=TRUE)
> par(lty=2, pch=17)
> plot(dosage, responseB, type="b")
> par(opar)
方式二:在绘图函数进行参数设置
> plot(dosage, responseB, type="b", lty=2, pch=17)
两种方式运行后效果一样,如图4所示:
图4:不同剂量下病人对药B的反映图
R绘图常用参数归纳如下。
符号和线型参数,如图5所示。
图5:R符号和线型参数
R符号如6所示,线型如图7所示。
图6:R符号
图7:R线型
颜色参数,如图8所示。
图8:R颜色参数
关于R颜色,可以进一步参阅:http://research.stowers-institute.org/efg/R/Color/Chart
文本参数,如图9所示。
图9:文本尺寸参数
字体参数,如图10所示。
图10:字体参数
面板大小和边距参数,如图11所示。
图11:面板大小和边距参数
基于参数化图形的一个实例。
程序清单如下:
> dose <- c(20, 30, 40, 45, 60)
> drugA <- c(16, 20, 27, 40, 60)
> drugB <- c(15, 18, 25, 31, 40)
> opar <- par(no.readonly=TRUE)
> par(pin=c(2, 3))
> par(lwd=2, cex=1.5)
> par(cex.axis = .75, font.axis=3)
> plot(dose, drugA, type="b", pch=19, lty=2, col="red")
> plot(dose, drugB, type="b", pch=23, lty=6, col="blue", bg="green")
> par(opar)
图形修饰
图形修饰包括添加文本、自定义坐标轴和说明。例如:
>plot(dose,drugA,type="b",col="red",lty=2,pch=2,lwd=2,
main="Clinical Trials for Drug A",sub="This is hypothetical data",
xlab="Dosage", ylab="Drug Resoponse",
xlim=c(0,60), ylim=c(0, 70))
效果图如图12所示。
图12:图形修饰演示图
图形修饰主要又如下几个方面。
方面一:标题,使用title()函数。
方面二:坐标轴,使用axis()函数。
方面三:参照线,使用abline()函数。
方面四:说明,使用legend()函数。
方面五:文字,使用text()函数。
图形合并
R使用函数par()或者layout()实现图形合并。关于每种方法,演示如下:
方法一:基于par()图形合并
程序清单:
> rm(list=ls())
> attach(mtcars)
> opar <- par(no.readonly=TRUE)
> par(mfrow=c(2,2))
> plot(wt,mpg, main="Scatterplot of wt vs. mpg")
> plot(wt,disp, main="Scatterplot of wt vs disp")
> hist(wt, main="Histogram of wt")
> boxplot(wt, main="Boxplot of wt")
> par(opar)
> detach(mtcars)
效果图如图13所示。
图13:基于par()图形合并
方法二:基于layout()图形合并
程序清单:
> layout(matrix(c(1,1,2,3), 2, 2, byrow=TRUE))
> hist(wt)
> hist(mpg)
> hist(disp)
> detach(mtcars)
效果图如图14所示。
图14:基于layou()图形合并
总结
1 图形创建与保存
2 图形修饰与合并
参考资料
1 王路情博客