1. plot函数绘制图像
plot()函数:是对R中的多种对象进行绘图的泛型函数。它会识别作图对象的类,从而根据这些类来调用相应的作图方法
plot(x, y, type, main, sub, xlab, ylab, xlim, ylim, pch, lty, lwd, col...)
- x, y: 各绘图点横坐标, 纵坐标构成的向量
- type: 指定绘图的类型. 取“p”为点图;取“l”为线图;取“b”为点连线;取“o”为线穿过点;取“h”为悬垂线;取“s”为阶梯线
- main: 指定主标题. - sub: 指定副标题
- xlab: 指定 x 轴的标签;ylab: 指定 y 轴的标签
- xlim: 指定横轴的上下限, 取值为上下限构成的向量;ylim: 指定纵轴的上下限, 取值为上下限构成的向量
- pch: 指定观察点的符号, 可取从 1 ∼ 25 的整数
- lty: 指定连线类型, 可取从 1 ∼ 6 的整数
- lwd: 指定连线的宽度, 取整数
- col: 指定颜色, 可取正整数, 或指定颜色参数
例如,plot()函数可以针对数据框(dataframe)这一类,自动调用plot.data.frame方法来绘图
windows()
par(mfrow=c(2,2))
plot(1:10,main="missing y")
plot(sin,-pi,pi,ylab="sin(x)",main="function: sin(x)")
plot(cars,main="dataframe: cars")
plot(PlantGrowth$group,PlantGrowth$weight,xlab="group",ylab="wei
ght",main="factor: PlantGrowth")
dev.off()
- 第一幅图形中,plot()函数绘制的对象是向量,在函数中,仅给出了成对数据x和y中的x向量,在y缺失的情况下,plot()函数就会使用向量x作为纵坐标,对其元素的位置绘制散点图
- 第二幅图形中,plot()函数绘制的对象是函数sin(x)。此时,泛型函数plot()实际上是自动调用了curve()函数来绘制图形
- 第三幅图形中,plot()函数绘制的对象是数据框。数据集cars是一个数据框,其中的两列变量speed和dist均为数值型。对于这种数值型的两列数据框,plot()函数将用第二列数据对第一列数据绘图,即用dist对speed绘图
- 第四幅图形中,plot()函数绘制的对象也是数据框,但是其中的一列为因子。当y轴是数值向量时,将绘制盒装图(boxplot);而当y轴为因子向量时,则绘制棘状图(spineplot)
2. pie()函数绘制饼图
R中制作饼图的基本用法是:
pie(x, labels = names(x), edges = 200, radius = 0.8,
clockwise = FALSE, init.angle = if(clockwise) 90 else 0,
density = NULL, angle = 45, col = NULL, border = NULL, lty =
NULL, main = NULL, ...)
- x为向量,其元素为非负的数值型数据,这些数据反映在饼图的对应面积上。
- labels是表达式或者字符串,用以给数据添加标签。
- edges用来控制饼图外圈的圆润程度。饼图是由多边形拟合而成的,edges数值越大,饼图的外圈看上去就越圆。
- radius用来控制饼图的半径,如果给数据添加的标签很长,缩小饼图半径就能够将字符完整显示出来。
- clockwise用来控制排列顺序,即顺时针或逆时针方向排列。
- density用来控制阴影线的密度。
- angle用以控制阴影线的斜率。
- col是一个向量,用以填充被分割饼图的每一区域的颜色。
- main控制图的标题。
pie(c(10,20,30,40),col=rainbow(4),labels=c("10%","20%","30%","40
%"),main="PIE CHART")
3. barplot()函数绘制柱状图
barplot(height, width = 1, space = NULL, names.arg =
NULL, legend.text = NULL, beside = FALSE, horiz = FALSE,
density = NULL, angle = 45, col = NULL, border = par("fg"),
main = NULL, sub = NULL, xlab = NULL, ylab = NULL, xlim
= NULL, ylim = NULL, xpd = TRUE, log = "", axes = TRUE,
axisnames = TRUE, cex.axis = par("cex.axis"), cex.names =
par("cex.axis"), inside = TRUE, plot = TRUE, axis.lty = 0,
offset = 0, add = FALSE, args.legend = NULL, ...)
- height是绘图所用到的数据,数据的大小差异体现在柱形的高度上面。如果想要对一组数据进行绘图,则数据以向量方式输入;如果想要对两组以上数据进行绘图,则数据以矩阵方式输入,矩阵每一行代表一组数据。
- names.arg是图形中绘制于每个柱形下方的名称向量。如果该参数被忽略,则名称就显示为向量所带的名称属性或矩阵的名称列。
- legend.text用以控制图例。
- horiz控制柱形(条形)以垂直或水平方式放置。
- beside控制不同组数据以垂直方式堆积或水平方式并列来进行展示。取FALSE(默认取值)时,不同组的数据以垂直方式堆积展示
first<-c(0.6,0.15,0.3)
income<-c("wage","property","others")
par(mfrow=c(2,2))
barplot(first,main="Default")
barplot(first,names.arg=income,density=10,angle=30,main="density")
barplot(first,horiz=TRUE,main="horiz=TRUE")
x<-barplot(first,col=c("red","green","blue"),ylim=c(0,0.8),main="colors & values")
x
[,1] [1,] 0.7 [2,] 1.9 [3,] 3.1
text(x,first+0.1,labels=as.character(first))
- 在左上角的第一幅图形中,采用默认的方式绘制条状图,由于没有添加条形图的坐标轴标签,我们所获知的信息有限
- 在右上角的第二幅图形中,通过参数density=10添加了阴影线,并设置了阴影线的倾斜角度angle=30,还增加了条形图的横轴标签,这样,各种收入来源比较起来就很方便
- 在左下角的第三幅图形中,使用参数horiz=TRUE,绘制了水平条形图
- 在右下角的第四幅图形中,增加了每条矩形的颜色,并且通过text()函数增加了每个收入来源的具体数值。请注意text()函数中文本位置的参数设置 方 法 first+0.1 , 我们把barplot()函数的结果赋值给x,而x的返回值为条形图横坐标的位置。
4. hist()函数绘制直方图
hist(x, breaks = "Sturges", freq = NULL, probability = !freq,
include.lowest = TRUE, right = TRUE, density = NULL,
angle = 45, col = NULL, border = NULL, main =
paste("Histogram of", xname), xlim = range(breaks), ylim
= NULL, xlab = xname, ylab, axes = TRUE, plot = TRUE,
labels = FALSE, nclass = NULL, warn.unused = TRUE, ...)
- x是数值型向量,即所需要绘制直方图的数据集。
- breaks参数通过以下方式控制直方图的单元(cells)数量:
- 给出一个向量,从而确定直方图单元的区间断点(breakpoints);
- 给出单个数值,从而确定直方图的单元数量;
- 给出计算区间的算法名称的字符串;
- 一个用于计算单元数量的函数。
- freq和probability均为逻辑判断式,且两者为互斥选项,freq=TRUE时做频率图,否则为概率密度图。当probability=TRUE时,所有矩形的面积之和为1
- labels是逻辑值,当labels=TRUE时,将添加相应的数值到矩形单元的上方。
- density参数设置填充矩形条的阴影线(shading lines)的密度,度量单位是每英寸填充的线条数。缺省模式下不绘制阴影线。angle参数设定了阴影线的角度。
- col参数设定了填充矩形条内部的颜色,当density为正数时,阴影线的颜色由col指定。
- border参数设置矩形条边框的颜色,当border=FALSE或NA时,将不绘制边框。
- 如果想要自己设定坐标,可以使用xaxt="n"或yaxt="n"不绘制坐标,然后使用低级绘图命令axis来自定义坐标
attach(USArrests)
hist(Murder)
str(hist(Murder))
List of 6
$ breaks : num [1:10] 0 2 4 6 8 10 12 14 16 18
$ counts : int [1:9] 1 12 8 7 7 4 6 3 2
$ density : num [1:9] 0.01 0.12 0.08 0.07 0.07
0.04 0.06 0.03 0.02
$ mids : num [1:9] 1 3 5 7 9 11 13 15 17
$ xname : chr "Murder"
$ equidist: logi TRUE
- attr(*, "class")= chr "histogram"
detach(USArrests)
5. boxplot()函数绘制箱线图
箱线图:也称为箱须图、盒须图,是利用数据中的最大值、最小值、中位数、下四分位数、上四分位数来绘制数据的一种方法。
通过箱线图,可以看出数据的分布情况
分散度:上下四分位数之间的差被称为分散度
boxplot(x, ..., range = 1.5, width = NULL, varwidth = FALSE,
notch = FALSE, outline = TRUE, names, plot = TRUE,
border = par("fg"), col = NULL, log = "", pars = list(boxwex
= 0.8, staplewex = 0.5, outwex = 0.5), horizontal = FALSE,
add = FALSE, at = NULL)
- 参数x为所要绘制的数据。数据x可以以分组的方式进行绘制,此时用到参数formula,表示输入一个公式,形式为y~GROUP,其中y为数值型变量,GROUP为类别型变量(分组变量)。
- 参数range控制点线(即触须,whisker)延伸的长度,默认值是上下四分位数之差(分散度)的1.5倍,在触须延伸终点绘制横截线。
- 参数outline表示是否绘制异常值。
- 参数horizontal控制是否以水平或垂直于坐标轴的方式绘制箱线图
boxplot(mtcars$mpg,ylab="mpg: Miles/(US) gallon",main="Motor
Trend Car Road Tests")
summary(mtcars$mpg)
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.42 19.20 20.09 22.80 33.90