R语⾔基本画图函数与多图多线的⽤法
常⽤统计作图函数汇总
plot()
hist() 直⽅图
stem() 茎叶图
boxplot() 箱线图(盒形图)
国民女神coplot() 协同图
qqnorm() 正态qq图
qqplot() 两总体qq图
1. ⾼级低级图形函数的常⽤选项
⾼、低级图形函数概述
⾼级图形函数可以迅速简便地绘制常见类型的图形,但是,某些情况下你可能希望绘制⼀些有特殊要求的图形。⽐如,你希望坐标轴按照⾃⼰的设计绘制,在已有的图上增加另⼀组数据,在图中加⼊⼀⾏⽂本注释,绘出多个曲线代表的数据的标签,等等。
低级图形函数让你在已有的图的基础上进⾏添加。
低级图形函数⼀般需要指定位置信息,其中的坐标指的是所谓⽤户坐标,即前⾯的⾼级图形函数所建⽴的坐标系中的坐标。坐标可以⽤两个向量x和y给出,也可以由⼀个两列的矩阵给出。如果交互作图可以⽤下⾯介绍的locator()函数来交互地从图形中直接输⼊坐标位置。
最常⽤⾼级函数的是plot()函数。⽐如,
- plot(x,y)(其中x,y是向量)对两个变量画散点图。
- ⽤plot(z) (其中z是⼀个定义了x变量和y变量的列表,或者⼀个两列的矩阵)也可以达到同样⽬的。
如果x是⼀个时间序列对象(时间序列对象⽤ts()函数⽣成),plot(x)绘制时间序列曲线图。
- 如果x是⼀个普通向量,则绘制x的值对其下标的散点图。
- 如果x是复数向量则绘制虚部对实部的散点图。
- 如果f是⼀个因⼦,则plot(f)绘制f的条形图(每个因⼦⽔平的个数)。
- 如果f是因⼦,y是同长度的数值向量,则plot(f,y)对f的每⼀因⼦⽔平绘制y中相应数值的盒形图。
- 如果d是⼀个数值型数据框,则plot(d)对d的每两个变量之间作图(散点图等)
load("F:/R/cl.RData")
plot(cl$Sex)
⾼级绘图函数常⽤选项
低级绘图函数常⽤选项
低级图形函数⼀般需要指定位置信息,其中的坐标指的是所谓⽤户坐标,即前⾯的⾼级图形函数所建⽴的坐标系中的坐标。坐标可以⽤两个向量x和y给出,也可以由⼀个两列的矩阵给出。如果交互作图可以⽤下⾯介绍的locator()函数来交互地从图形中直接输⼊坐标位置。
图形参数详解
图形元素
类型解释
pch 指定⽤于绘制散点的符号。绘制的点往往略⾼于或低于指定的坐标位置,仅pch=“.”
⽆这个问题。
lty=2
指定画线⽤的线型。缺省值lty=1是实线。从2开始是各种虚线。lwd=2
指定线粗细,以标准线粗细为单位。这个参数影响数据曲线的线宽以及坐标轴的线宽。col=2
指定颜⾊,可应⽤于绘点、线、⽂本、填充区域、图象。颜⾊值也可以⽤象”red”,”blue” 这样的颜⾊名指定。font=2⽤来指定字体的整数。⼀般font=1是正体,2是 ⿊体,3是 斜体,4是 ⿊斜体。
font.axisfont.labfont.mainfont.sub 分别⽤来指定坐标刻度、坐标轴标签、标题、⼩标题所⽤的字体。adj=-0.1指定⽂本相对于给定坐标的对齐⽅式。取0表⽰左对齐,取1表⽰右对齐,取0.5表⽰居中。此参数的值实际代表的是出现在给定坐标左
边的⽂本的⽐例,所以adj=-0.1的效果是⽂本出现在给定坐标位置的右边并空出相当于⽂本10%长度的距离。
cex=1.5
指定字符放⼤倍数。类型解释
坐标轴与坐标刻度
许多⾼级图形带有坐标轴,还可以先不画坐标轴然后⽤axis()单独加。
北京企业信息查询函数box() ⽤来画坐标区域四周的框线。
坐标轴包括三个部件:轴线(⽤lty 可以控制线型),刻度线,刻度标签。它们可以⽤如下的图形参数来控制:
参数
解释lab=c(5, 7, 12)
第⼀个数为x 轴希望画⼏个刻度线,第⼆个数为y 轴希望画⼏个刻度线,这两个数是建议性的;第三个数是坐标刻度标签的宽度为多少个字符,包括⼩数点,这个数太⼩会使刻度标签四舍五⼊成⼀样的值。las=1
勇敢的近义词坐标刻度标签的⽅向。0表⽰总是平⾏于坐标轴,1表⽰总是⽔平,2表⽰总是垂直于坐标轴。mgp=c(3,1,0)
坐标轴各部件的位置。第⼀个元素为坐标轴位置到坐标轴标签的距离,以⽂本⾏⾼为单位。第⼆个元素为坐标轴位置到坐标刻度标签的距离。第三个元素为坐标轴位置到实际画的坐标轴的距离,通常是0。tck=0.01坐标轴刻度线长度,单位是绘图区域⼤⼩,值为占绘图区域的⽐例。tck ⼩于0.5时x 轴和y 轴的刻度线将统⼀到相同的长度。取1时即画格⼦线。取负值
时刻度线画在绘图区域的外⾯。
xaxs=”s”yaxs=”d”控制x 轴和y 轴的画轴⽅法。取值为”s”(即standard )或”e”(即extended )的时候数据范围控制在最⼩刻度和最⼤刻度之间。取”e”时如果有数据点⼗分
靠近边缘轴的范围会略微扩⼤。这种画轴⽅式有时会在轴的⼀边留下太⼤的空⽩。取值为“i”(即internal )或“r”(此为缺省)使得刻度线都落在数据范围内部,⽽“r”⽅式所留的边空较⼩。取值设为”d”时会锁定此坐标轴,后续的图形都使⽤与它完全相同的坐标轴,这在要⽣成⼀系列可⽐较的图形的时
候是有⽤的。要解除锁定需要把这个图形参数设为其它值。
⼀页多图
⼀页多图⽤mfrow 参数或mfcol 参数规定,如:
par(mfrow=c(3,2)) 表⽰同⼀页有三⾏两列共六个图,⽽且次序为按⾏填放。
类似地,par(mfcol=c(3,2))规定相同的窗格结构,但是次序为按列填放,即先填满第⼀列的三个再填第⼆列。
par(mfrow=c(1,1))即可。缺省时⽆外边空。为了规定外边空⼤⼩,可以⽤omi 参数或oma 参数。omi
参数使⽤英⼨为单位,oma 参数以⽂本⾏⾼为单位,两个参数均为四个元素的向量,分别给出下、左、上、右⽅的边空⼤⼩。
如:par(oma=c(2,0,3,0))函数mtext ⽤来在外边空加⽂字标注。
其⽤法为mtext(text, side = 3, line = 0, outer = FALSE)
在多图环境中还可以⽤mfg 参数来直接跳到某⼀个窗格,⽐如par(mfg=c(2,2,3,2))表⽰在三⾏两列的多图环境中直接跳到第⼆⾏第⼆列位置。mfg 参数的后两个表⽰多图环境的⾏、列数,前两个表⽰要跳到的位置。
可以不使⽤多图环境⽽直接在页⾯中的任意位置产⽣⼀个窗格来绘图,参数为fig ,如:par(fig=c(4,9,1,4)/10)此参数为⼀个向量,分别给出窗格的左、右、下、上边缘的位置,取值为占全页⾯的⽐例,⽐如上⾯的例⼦在页⾯的右下⽅开⼀个窗格作图。
图形边空
S 中⼀个单独的图由绘图区域(绘图的点、线等画在这个区域中)和包围绘图区域的边空组成,边空中可以包含坐标轴标签、坐标轴刻度标签、标题、⼩标题等,绘图区
域⼀般被坐标轴包围。
边空的⼤⼩由mai参数或mar参数控制,它们都是四个元素的向量,分别规定下⽅、左⽅、上⽅、右⽅的边空⼤⼩,其中mai取值的单位是英⼨,⽽mar的取值单位是⽂本⾏⾼度。
例如:
par(mai=c(1, 0.5, 0.5, 0))
par(mar=c(4, 2, 2, 1))
这两个图形参数不是独⽴的,设定⼀个会影响另⼀个。S缺省的图形边空常常太⼤,以⾄于有时图形窗⼝较⼩时边空占了整个图形的很⼤⼀部分。
通常我们可以取消右边空,并且在不⽤标题时可以⼤⼤缩⼩上边空。例如下例可以⽣成⼗分紧凑的图形:
oldpar <- par(mar=c(2,2,1,0.2))
plot(x,y)
在⼀个页⾯上画多个图时边空⾃动减半,但我们往往还需要进⼀步减⼩边空才能使多个图有意义。
交互图形函数
函数locator(n, type)运⾏时会停下来等待⽤户在图中点击,然后返回图形中⿏标点击的位置的坐标。等待点击时⽤⿏标中键点击可以选择停⽌等待,⽴即返回。参数n指定点击多少次后⾃动停⽌,缺省为500次;参数type如果使⽤则可指定绘点类型,与plot()函数中的type 参数⽤法相同,在⿏标点击处绘点(线、垂线,等等)。locator()的返回值是⼀个列表,有两个变量(元素)x和y,分别保存点击位置的横坐标和纵坐标
例如,为了在已经绘制的曲线图中找⼀个空地⽅标上⼀⾏⽂本,只要使⽤如下程序:
text(locator(1), "Normal density", adj=0)
text()函数的adj参数⽤⼀个数字表⽰⽂本串相对于给定的坐标的画法,adj=0表⽰给定坐标为⽂本串左侧的坐标,adj=1表⽰给定坐标为⽂本串右侧的坐标,adj=0.5表⽰给定坐标为⽂本串中间的坐标。
函数identify(x, y, labels)在运⾏时也会停下来等待⽤户点击,直到按了⿏标中键,任何返回⽤户在图形中⽤⿏标点击的点的序号,点击时对点击的点加标签。参数x和y给出要识别的各个点的坐标。labels参数指定点击某个点时要在旁边绘制的⽂本标签,缺省时标出此点的序号,如果只需要返回值⽽不想
画任何标记则可以在调⽤此函数时加⼀个plot=F参数。
注意identify()与locator()不同,locator()返回图中任意点击位置的坐标,⽽identify() 只返回离点击位置最近的点的序号。例如,我们在向量x和y中有若⼲个点的坐标,运⾏如下程序:
attach(cl)
plot(Height, Weight) ;
identify(Height,Weight)
这时显⽰转移到图形窗⼝,进⼊等待状态,⽤户可以点击图中特别的点,该点的序号就会在旁边标出。为了结束,只要单击⿏标中键或单击右键并选择停⽌。返回结果为你点击的各个点的序号:
漆的组词
警告: 已经找到了最近的点
警告: 没有0.25英尺的点
[1] 1 2 10 15 16
2. hist直⽅图
hist(x)作向量x的直⽅图。缺省时⾃动确定分组,也可以⽤nclass=参数指定分组个数,或者⽤breaks=参数指定⼀个分组点向量。如果指定了prob=T则纵轴显⽰密度估计。
3. stem茎叶图
1988年是什么命Usage:
女性肝不好的五个表现
stem(x, scale = 1, width = 80, atom = 1e-08)
Arguments:
x: a numeric vector.
scale: This controls the plot length.
width: The desired width of plot.
玉兰花简笔画atom: a tolerance.
References:
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) _The New S
Language_. Wadsworth & Brooks/Cole.
Examples:
stem(islands)
stem(log10(islands))
stem(cl$Weight, scale = 1, width = 80, atom = 1e-08)
The decimal point is 1 digit(s) to the right of the |
4 | 1
6 | 7
8 | 3445508
10 | 0332233我眼中的学生会
12 | 83
14 | 0
4. boxplot箱线图
箱线图的图形中的参数意义如下:
例⼦: 作了两个图叠加,⼀个为subt= supp == “VC“,另⼀个为subt= supp == ”OJ“.数据ToothGrowth有两个数量变量(len,do)和⼀个属性变量(supp); 对每个supp,do
各有三个值(各形成三个盒形图). len ~ do意味着box为len所做.
data(ToothGrowth)
boxplot(len ~ do, data = ToothGrowth, boxwex = 0.25, at = 1:3 - 0.2, subt= supp == "VC", col="yellow", main="Guinea Pigs' Tooth Growth", xlab="Vitamin C do mg", ylab="tooth length", ylim=c(0,35)) boxplot(len ~ do, data = ToothGrowth, add = TRUE, boxwex = 0.25, at = 1:3 + 0.2, subt= supp == "OJ", col="orange")
legend(2, 9, c("Ascorbic acid", "Orange juice"), fill = c("yellow", "orange"))