R语言学习之数量生态学笔记(一)
参考书:《Numerical Ecology with R》-Daniel Borcard -F-P
1、基础函数(数据Doubs鱼类数据)
table统计数据出现的频次
> z
[1] 1 1 1 2 5 5 7 7 7 7 7 7
> table(z)
z
1 2 5 7
3 1 2 6
unlist函数的作用,就是将list结构的数据,变成非list的数据,即将list数据变成字符串向量或者数字向量的形式。不以列表形式展示
> j<-list(c(1,2,3),5)
> j
[[1]]
[1] 1 2 3
[[2]]
[1] 5
> unlist(j)
[1] 1 2 3 5
nrow 提取数据总行数
ncol 提取数据总列数
head 只展示数据前几行
定义数据目标数据,对于大数据,只需要显示前几行或者前几列时如spe数据
spe( 1:5 , 1:10 ) 表示显示数据spe前五行前五列
dim 提取数据框维度(行数列数)
> dim(spe)
[1] 30 27
colnames 提取数据列数
rownames 提取数据行数
summary 以列为单位对列变量进行描述性统计
> summary(spa)
X Y
Min. : 0.00 Min. : 20.00
1st Qu.: 80.94 1st Qu.: 42.13
Median : 96.56 Median : 73.14
Mean : 97.58 Mean : 66.57
3rd Qu.:130.03 3rd Qu.: 89.13
Max. :159.44 Max. :105.43
range 数据范围
range(spe)
[1] 0 5
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, ...)
density:底纹的密度。默认值为NULL
angle:设置底纹的斜率
names.arg:边框的名字
xlim和ylim:设置图形x轴与y轴的范围。
xlab和ylab:设置x轴与y轴的lable
axes:逻辑参数。设置图形是否显示x轴或y轴。(如果TRUE,垂直(或水平,horiz如果是真实的)轴绘制)
las:与axes参数相对应,表示坐标轴label的方向(0和1)
plot:逻辑参数。设置是否显示条形图。
beside:逻辑参数。如果FALSE,那么将绘画堆叠式的条形;如果是TRUE,将绘画并列式条形。
cex.axis:设置坐标轴数值的膨胀率。比如cex.axis=1.5
cex.names: 设置条形标签(barlabels)的膨胀率。比如cex.axis=1.5
col: 设置条形底纹或者填充颜色。
gray:由白色到黑色的gray(0:8 / 8)0为纯白,1为纯黑,这儿分了8个程度
border:设置条形边缘颜色。如果设置为NA,则消除了边缘
width:设置条形的宽度
axis.lty:设置x轴的类型(类似lty)。默认axis.lty=0
names.arg:设置条形标签(barlabels)。
horiz:逻辑参数。设置图形是水平或是垂直
space:设置各个条形间的宽度。相当于各个条形宽度的一部分。
axisnames:逻辑参数。设置是否显示条形标签
xaxt= "n" 去除横坐标
yaxt = "n"去除纵坐标
legend.text = 是添加文本
args.legend 文本的位置topright,topleft,(args.legend = list(x = "topleft", cex=2))
add = “TRUE”将barplot加在目前已经有的图上
添加坐标轴的标签
axis(side=1, c(-2, 0, 2),tcl=-0.2, labels=FALSE)#添加坐标轴,slide=1代表横坐标,slide=2代表纵坐标,tcl的值代表添加坐标轴的那个刻度的长度,
图例函数legend()主要参数解释:
除了利用x,y设置图例的坐标外,用”topleft”, "center","bottomright"等设置位置非常方便。ncol设置图例的列数, horiz设置图例的排列方向。常有的参数还有col,lty,pch
legend(x,y = NULL, legend, fill = NULL, col = par("col"),border="black", lty, lwd, pch,angle = 45, density = NULL, bty = "o", bg =par("bg"),box.lwd = par("lwd"), box.lty= par("lty"), box.col = par("fg"),pt.bg= NA, cex = 1, pt.cex = cex, pt.lwd = lwd,xjust = 0, yjust = 1, x.intersp = 1,y.intersp = 1,adj = c(0, 0.5), text.width = NULL,text.col = par("col"),merge = do.lines && has.pch,trace = FALSE,plot = TRUE, ncol = 1, horiz = FALSE,title = NULL, inset = 0, xpd, title.col = text.col)
x和y:设置图例在图片上的位置。
title:设置图例标题。(在图例盒子里)。
title.col:设置图例标题的颜色。
text.col: 设置图例中文本文字的颜色。比如说:text.col=’red’。
text.width: 设置图例文本文字的宽度。宽度比例与x轴相关。
trace:逻辑参数。如果设置为TRUE,那么显示出函数计算过程。
fill: 设置一个填充了指定颜色的盒子放在文本旁边。
border:指定该盒子的边缘颜色。
lty与lwd:设置图例中线条的类型以及粗细。
density与angle:设置图例中小盒子的底纹密度和角度。
bty:设置图例盒子的类型。只能选择o或者n。
bg:设置图例盒子的背景颜色。
box.lty/box.lwd/box.col:设置图例盒子边缘线类型,粗细,颜色。
pt.bg:设置图例中点的背景颜色。
pt.cex:设置点的膨胀率。
pt.lwd:设置点的边缘线的粗细。
xjust与yjust:上下调整图例的位置。
x.intersp与y.intersp:设置图例盒子空间大小。
ncol:设置图例显示的列数。
horiz:设置水平方式显示图例。默认为垂直方式显示
hist(): breaks设置每个柱的间距;freq柱图表示count或frequency;polt设置是否画图;density和angle可以设置柱上的斜线;axes设置是否需要画坐标轴; cor设置柱图的颜色;border设置柱图边界的颜色;xlim设置横轴范围;ylim设置纵轴范围。
layout():mat用矩阵设置窗口的划分,矩阵的0元素表示该位置不画图,非0元素必须包括从1开始的连续的整数值,比如:1……N,按非0元素的大小设置图形的顺序。widths用来设置窗口不同列的宽度,heights设置不同行的高度。par()的mfcol,和mfrow参数也有类似layout的功能,不过相对layout就逊色多了。
par():mar设置图离四个边缘的距离;bg设置背景颜色;xaxt和yaxt设置坐标轴标签的类型(=”n”表示不画轴标签);xlim和ylim设置坐标轴的范围。
axis():las设置坐标轴标签的方式(水平,垂直……)。
mtext():为四个坐标轴添加标签。
text():在给定坐标的位置写字。
lines():lty设置线的类型;lwd设置线的宽度。
points():pch设置点的类型。
heatmap():Rowv和Colv设置是否需要按行或列聚类;scale设置是否需要按行或列标准化;na.rm设置是否移去NA;RowSideColors和ColSideColors可以在行或列边缘添加颜色;keep.dendro设置是否画聚类树。
dendrogram():'nodePar'和'edgePar'都是list,可以方便的设置节点和边的各种属性,如:颜色,样式,宽度,标签……。
plot 散点图
plot(x, y = NULL, type = "p", xlim = NULL, ylim = NULL, log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL, ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, asp = NA, ...)
主要参数的含义如下:
(1)type为一个字符的字符串,用于给定绘图的类型,可选的值如下:
"p":绘点(默认值);
"l":绘制线;
"b":同时绘制点和线;
"c":仅绘制参数"b"所示的线;
"o":同时绘制点和线,且线穿过点;
"h":绘制出点到横坐标轴的垂直线;
"s":绘制出阶梯图(先横后纵);
"S":绘制出阶梯图(先纵后竖);
"n":作空图。
(2)main参数 字符串,给出图形的标题;
(3)sub参数 字符串,给出图形的子标题;
(4)xlab 和 ylab参数 字符串,用于给出x轴和y轴的标签。
(5)xlim 和 ylim参数 都是二维向量,分别表示x轴和y轴的取值范围。
1、符号和线条
pch:指定绘制点所使用的符号,取值范围[0, 24],其中4是“差号”,20是“点”
cex:指定符号的大小。cex是一个数值,表示pch的倍数,默认是1.5倍
lty:指定线条类型。lty=1代表实线,2至6都是虚线,虚的程度不一样
lwd:指定线条宽度,默认值为lwd=1,可以适当修改1.5倍、2倍等
2、颜色
col:默认绘图颜色。某些函数(如lines、pie)可以接受一个含有颜色值的向量,并自动循环使用。
例如:col=c("red", "blue")需要绘制三条线,那么三条颜色分别为red、blue、red
col.axis:坐标轴刻度文字的颜色,不是坐标轴的颜色
col.lab:坐标轴标签(名称)的颜色
col.main:标题的颜色
col.sub:副标题的颜色
fg:图形的前景色
bg:图形的背景色( 先要用pch指定形状)
3、文本属性(用来指定字号、字体、字样)
cex.axis:坐标轴刻度文字的缩放倍数
cex.lab:坐标轴标签(名称)的缩放倍数
cex.main:标题的缩放倍数
cex.sub:副标题的缩放倍数
font:整数。用于指定字体样式。1常规、2粗体、3斜体、4粗斜体
4、图形尺寸与图形边界
pin:以英寸表示图形的宽和高
mai:以数值向量表示边界大小,顺序为"下、左、上、右",单位为英寸
mar:以数值向量表示边界大小,顺序为"下、左、上、右",单位为英分,默认值c(5, 4, 4, 2)+0.1
5、标题
可以使用函数title,格式为:
title(main = " ", sub = " ", xlab = " ", ylab = " ")
也可以直接把title里面的参数直接放在plot()里面
6、坐标轴
axes=FALSE 将禁用全部坐标轴,框架和刻度全部没有了
xaxt="n" 禁用x轴的刻度线
yaxt="n" 禁用y轴的刻度线
asp 限定 y/x aspect 比率
也可以通过axis函数自定义axis(……)
side:一个整数。表示在图形的哪边绘制坐标轴(1=下,2=左,3=上,4=右)
at:一个数值向量,表示需要绘制刻度线的位置
labels:一个字符型向量(也可以是数值型),表示刻度线旁边的文字标签(刻度值),如果整个不写,则直接使用at的值
col:线条和刻度的颜色
lty:线条类型
las:标签的字体是否平行(=0)或者垂直(=2)坐标轴
tck:刻度线的长度(默认值-0.01,负值表示刻度在图形外,正值表示刻度在图形内侧)
7、参考线
abline(h=yvalues, v=xvalues)
例如:plot(1:10)
abline(h = c(1, 5)) #则在y=1和5处各有一条水平线
abline(v = c(1, 5)) #则在x=1和5处各有一条垂直线
lines 给散点图连接直线
text 坐标轴中添加文字,格式:text(x,y,"内容",cex = ,col= )
par 绘图窗口分成多个区域
par(mfrow=c(a,b)):分成a行b列
apply
例子:
b为:
first second
one 1 4
two 2 5
three 3 6
apply(b,1,sum)
上面的指令代表对矩阵b进行行计算,分别对每一行进行求和。函数涉及了三个参数:
第一个参数是指要参与计算的矩阵;
第二个参数是指按行计算还是按列计算,1——表示按行计算,2——按列计算;
第三个参数是指具体的运算参数。
sort 数据按照升序排列
hist 立方图
x: 用于绘制直方图的数据,该参数的值为一个向量
break : 该参数的指定格式有很多种
第一种: 指定一个向量,给出不同的断点
breaks = c(0.5, 1.5, 2.5, 3.5)
第二种:指定分隔好的区间的个数,会根据区间个数自动去计算区间的大小
breaks = seq(0,30,by = 5)
freq: 逻辑值,默认值为TRUE , y轴显示的是每个区间内的频数,FALSE, 代表显示的是频率(= 频数/ 总数)
probability : 逻辑值,和 freq 参数的作用正好相反,TRUE 代表频率, FALSE 代表频数
labels: 显示在每个柱子上方的标签,
axes : 逻辑值,是否显示轴线
col : 柱子的填充色
border : 柱子的边框的颜色,默认为black, 当border = NA 时, 代表没有边框
densitty 和 angle , 用线条填充柱子
seq 生成一系列的数值
seq(a,b,c)
开始数值为a,结束数值为b,步长c,无步长默认为1
+, -, * , / 矩阵的四则运算,对应位置的元素进行运算要求矩阵的维数必须相同
t() 矩阵的行列转置
colSums() 分别对矩阵的每一列进行求和
rowSums() 分别对矩阵的每一行进行求和
colMeans() 分别对矩阵的每一列进行求平均值
rowMeans() 分别对矩阵的每一行进行求平均值
det() 解方程的行列式
crossprod() 解两个矩阵的内积
outer() 解两个矩阵的外积,又叫叉积
%*% 矩阵乘法,要求第一个矩阵的列数与行数相同
diag() 对矩阵取对角元素,若对象为向量(不管有没有缺失值),则生成以向量为对角元素的对角矩阵
solve() 在矩阵可逆的情况下,对矩阵求逆矩阵
eigen() 对矩阵求解特征值和特征向量