时间:2021-05-20
plot()
hist() 直方图
stem() 茎叶图
boxplot() 箱线图(盒形图)
coplot() 协同图
qqnorm() 正态qq图
qqplot() 两总体qq图
高、低级图形函数概述
高级图形函数可以迅速简便地绘制常见类型的图形,但是,某些情况下你可能希望绘制一些有特殊要求的图形。比如,你希望坐标轴按照自己的设计绘制,在已有的图上增加另一组数据,在图中加入一行文本注释,绘出多个曲线代表的数据的标签,等等。
低级图形函数让你在已有的图的基础上进行添加。
低级图形函数一般需要指定位置信息,其中的坐标指的是所谓用户坐标,即前面的高级图形函数所建立的坐标系中的坐标。坐标可以用两个向量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
hist(x)作向量x的直方图。缺省时自动确定分组,也可以用nclass=参数指定分组个数,或者用breaks=参数指定一个分组点向量。如果指定了prob=T则纵轴显示密度估计。
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箱线图的图形中的参数意义如下:
例子: 作了两个图叠加,一个为subset= supp == “VC“,另一个为subset= supp == ”OJ“.数据ToothGrowth有两个数量变量(len,dose)和一个属性变量(supp); 对每个supp,dose各有三个值(各形成三个盒形图). len ~ dose意味着box为len所做.
data(ToothGrowth)boxplot(len ~ dose, data = ToothGrowth, boxwex = 0.25, at = 1:3 - 0.2, subset= supp == "VC", col="yellow", main="Guinea Pigs' Tooth Growth", xlab="Vitamin C dose mg", ylab="tooth length", ylim=c(0,35))boxplot(len ~ dose, data = ToothGrowth, add = TRUE, boxwex = 0.25, at = 1:3 + 0.2, subset= supp == "OJ", col="orange") legend(2, 9, c("Ascorbic acid", "Orange juice"), fill = c("yellow", "orange"))boxplot(cl$Height~cl$Sex,data=cl,col = "lightgray");如果z是一个数值型变量,则coplot() 先对z的取值分组,然后对z的每一组取值分别绘图。
甚至可以用如coplot(y~x | x1+x2)表示对x1和x2的每一水平组合绘图。
coplot()和pairs()函数缺省绘制散点图,但可以用一个panel= 参数指定其它的低级绘图函数,如lines,panel.smooth等。
tsplot(x)绘制时间序列曲线图。多个参数时tsplot(x1, x2, ...)表示绘制多条曲线,自动统一曲线取值范围。如果参数非时间序列对象则以下标1,2,3等为横坐标绘图。
- qqnorm(x), qqline(x), qqplot(x,y)作分位数-分位数图。
- qqnorm(x)对向量x作正态概率(纵轴为次序统计量值,横轴为对应该次序统计量的标准正态分布分位数值)。
- qqline(x) 除作qqnorm(x)图之外还画一条拟合曲线。
qqplot(x,y)把x和y的次序统计量分别画在x轴和y 轴以比较两个变量的分布。
x <- rnorm(50)y <- rexp(60)qqplot(x,y)#可以判断是不是同一个类型的分布高级低级函数画图
x <- seq(-pi, pi, len = 65)plot(x, sin(x), type = "l", ylim = c(-1.2, 1.8), col = 3, lty = 2)points(x, cos(x), pch = 3, col = 4)lines(x, tan(x), type = "b", lty = 1, pch = 4, col = 6)title("legend(..., lty = c(2, -1, 1), pch = c(-1,3,4), merge = TRUE)", cex.main = 1.1)# 注意图例书写方式legend(-1, 1.9, c("sin", "cos", "tan"), col = c(3,4,6), lty = c(2, -1, 1), pch = c(-1, 3, 4), merge = TRUE, bg='gray90')matplot画图
matplot :用矩阵的列画多线图
Usage:
matplot(x, y, type = "p", lty = 1:5, lwd = 1, lend = par("lend"), pch = NULL, col = 1:6, cex = NULL, bg = NA, xlab = NULL, ylab = NULL, xlim = NULL, ylim = NULL, ..., add = FALSE, verbose = getOption("verbose"))require(grDevices)matplot((-4:5)^2, main = "Quadratic") # almost identical to plot(*)sines <- outer(1:20, 1:4, function(x, y) sin(x / 20 * pi * y))matplot(sines, pch = 1:4, type = "o", col = rainbow(ncol(sines)))matplot(sines, type = "b", pch = 21:23, col = 2:5, bg = 2:5, main = "matplot(...., pch = 21:23, bg = 2:5)")以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
plot()函数在R语言画图中位置十分重要,现在就对其具体用法做一个总结。基本用法:plot(x=x轴数据,y=y轴数据,main="标题",sub="子标题"
多段线就是由多条线条组成的一条线,它与直线最大差别有独特的线宽;将多段线分解后,就是一条条的直线。 1、打开软件点击多段线。 2、在画图去左击一处,输入
最近用R语言画图,plot函数是用的最多的函数,而他的参数非常繁多,由此总结一下,以供后续方便查阅。plot(x,y=NULL,type="p",xlim=NU
条形图表示矩形条中的数据,条的长度与变量的值成比例。R语言使用函数barplot()创建条形图。R语言可以在条形图中绘制垂直和水平条。在条形图中,每个条可以给予
golang这门语言,有个比较好的特性,就是支持函数的多返回值。想C,C++,Java等这些语言,是不支持函数多返回的。但是C,C++可以使用传递指针,实现函数