Transcript R graph

R graph
Group 8:
尹建民
张凤珺
一个最简单的R绘图实例
• x<-seq(0,2*pi,0.1)
plot(x,sin(x))
如何储存为文件?
如何使两条曲线在同一个窗口显示?
如何注释与美化?
• x<-seq(0,2*pi,0.1)
plot(x,cos(x))
X11()
Windows
Windows()
Graph
png()
jpeg()
File
pdf()
管理绘图
?device
管理绘图
• dev.list() 显示绘图设备
• dev.set() 选择作为当前绘图设备
• dev.off() 关闭绘图设备
如何储存为文件?
实例演示:
jpeg(file="d:/output.jpg")
x<-seq(0,2*pi,0.1)
plot(x,sin(x))
dev.off()
高级方式—绘
图函数
绘图方式
低级方式—绘
图命令
绘图参数
plot(x,y)
Pie(x)
…
legend()
title()
…
par()
layout()
函数原型:plot(x, y, parameters...)
参数
描述
axes=TRUE
如果是FALSE,不绘制轴与边框
type="p"
指定图形的类型,"p": 点,"l": 线,"b": 点连线,"o":同上,但
是线在点上,"h": 垂直线,"s": 阶梯式,垂直线顶端显示数据,
"S": 同上,但是在垂直线底端显示数据
xlim=, ylim=
xlab=, ylab=
main=“”
sub= “”
pch=12
col="yellow"
bg="red"
指定轴的上下限, 例如xlim=c(1, 10)或者xlim=range(x)
坐标轴的标签,必须是字符型值
主标题,必须是字符型值
副标题(用小字体)
改变绘图字符
更改绘图字符颜色,调用colors()查看所有颜色
更改绘图字符内部颜色(仅对pch=21-25的绘图字符有效)
高级绘图函数:plot
plot参数:pch
pch=
实例演示: x11()
x<-seq(0,2*pi,0.1)
plot(x,cos(x), pch=16)
Tips:注意15-20与21-25的区别。
plot参数:col与type
指定图形颜色col
•
•
•
•
•
"blue"
"red"
"yellow"
…
colors()
指定图形的类型type
"p": 点
"l": 线
"b": 点连线
"o" :点连线
"h": 垂直线
"s": 阶梯式,
垂直线顶端显
示数据,
• "S": 同上,但
是在垂直线底
端显示数据
•
•
•
•
•
•
实例演示: x11()
x<-seq(0,2*pi,0.1)
plot(x,cos(x),type="l",col="red")
Tips:注意不要忘记双引号
plot参数:main xlab ylab xlim ylim
xlim ylim :
指定轴的上下限, 例如xlim=c(1, 10)
或者xlim=range(x)
xlab ylab :
坐标轴的标签,必须是字符型值
main :
主标题,必须是字符型值
实例演示: plot(x, sin(x),xlab = “data1”,ylab = “data2” ,
main = "Scatter plot ",
xlim = c(0,10) ,ylim = c(-1,1))
Tips:注意坐标轴范围是否合适。
函数
pie(x)
boxplot(x)
coplot(x~y j z)
pairs(x)
hist(x)
barplot(x)
qqnorm(x)
qqplot(x, y)
contour(x, y, z)
描述
饼图
盒形图(box-and-whiskers)
关于z的每个数值(或数值区间)绘制x与y的二元图
如果x是矩阵或是数据框,作x的各列之间的二元图
x的频率直方图
x的值的条形图
正态分位数-分位数图
y对x的分位数-分位数图
等高线图(画曲线时用内插补充空白的值),x和y必
须为向量,z必须为矩阵, 使得
dim(z)=c(length(x),length(y))(x和y可以省略)
其他绘图函数
绘图命令
如何在图形上添加文字?
如何添加图例?
如何添加点与线?
如何绘制多边形?
命令
points(x, y)
lines(x, y)
text(x, y, labels,...)
segments(x0, y0,x1,
y1)
arrows(x0, y0,x1, y1,
angle= 30,code=2)
abline(a,b)
rect(x1, y1, x2,y2)
polygon(x, y)
legend(x, y,legend)
title()
axis(side, vect)
box()
描述
添加点(可以使用选项type=)
同上,但是添加线
在(x,y)处添加用labels指定的文字;典型的用法是:
plot(x, y,type="n"); text(x, y, names)
从(x0,y0)各点到(x1,y1)各点画线段
同上但加画箭头, 如果code=2则在各(x0,y0)处画箭头,
如果code=1则在各(x1,y1)处画箭头,如果code=3则在
两端都画箭头; angle控制箭头轴到箭头边的角度
绘制斜率为b和截距为a的直线
绘制长方形,(x1, y1)为左下角,(x2,y2)为右上角
绘制连接各x,y坐标确定的点的多边形
在点(x,y)处添加图例,说明内容由legend给定
添加标题,也可添加一个副标题
画坐标轴,side=1时画在下边,side=2时画在左边,
side=3时画在上边,side=4时画在右边。
在当前的图上加上边框
绘图命令
绘图命令:添加图例和标题
legend : 添加图例
legend(x, y = NULL, legend, fill =
NULL, col = par("col"), border="black",
lty, lwd, pch…)
title : 添加标题
title(main = NULL, sub = NULL, xlab
= NULL, ylab = NULL, line = NA,
outer = FALSE, ...)
实例演示: plot(x,sin(x), col=“red”, pch=20)
legend("topright", "sin(x)", pch = 20, col="red")
title("The model")
Tips:注意图例与图像样
式的一致
绘图命令:增加点与线与多边形
•
•
•
•
lines(x, y, …) : 在图像增加线
points(x, y, ...) : 在图像上增加点
rect(x1, y1, x2,y2) : 绘制长方形,(x1, y1)为左下角,(x2,y2)为右上角
polygon(x, y) : 绘制连接各x,y坐标确定的点的多边形
实例演示:
x<-seq(0,2*pi,0.1)
plot(x,sin(x), col="red", pch=20, family
= "serif", xlim = c(0, 7.5))
for(x in seq(0,2*pi,0.1)){
points(x,cos(x),col="blue",pch=20,
family = "serif")
}
函数par来永久地改变绘图参数
也就是说后来的图形都将按照par指定的参数来绘制
实现标题的左对齐和背景颜色的改变:
x11()
par(bg= "blue",adj=0)
x<-seq(0,2*pi,0.1)
plot(x , sin(x),
xlab = "data1",
ylab = "data2",
main = "Scatter plot")
bg : 控制背景颜色
adj : 控制关于文字的对齐方式,0是
左对齐,0.5是居中对齐,1是右对齐
绘图参数
参数
adj
bg
bty
cex
font
las
lty
lwd
mar
mfcol
mfrow
pch
ps
描述
控制关于文字的对齐方式,0是左对齐,0.5是居中对齐,1是右对齐,值> 1时对
齐位置在文本右边的地方,取负值时对齐位置在文本左边的地方
指定背景色(例如bg="red", bg="blue"; 用colors()可以显示657种可用的颜色名)
控制图形边框形状,可用的值为: "o", "l", "7", "c", "u" 和"]" (边框和字符的外表
相像);如果bty="n"则不绘制边框
控制缺省状态下符号和文字大小的值; 另外,cex.axis控制坐标轴刻度数字大小,
cex.lab控制坐标轴标签文字大小,cex.main控制标题文字大小,cex.sub控制副
标题文字大小
控制文字字体的整数(1: 正常,2: 斜体,3: 粗体,4: 粗斜体);和cex类似,还可
用: font.axis, font.lab, font.main, font.sub
控制坐标轴刻度数字标记方向的整数(0: 平行于轴,1: 横排,2: 垂直于轴,3:竖
排)
控制连线的线型, 可以是整数(1: 实线,2: 虚线,3: 点线,4: 点虚线,5: 长虚线,
6: 双虚线)
控制连线宽度的数字
控制图形边空的有4个值的向量c(bottom, left, top, right), 缺省值为c(5.1, 4.1,
4.1, 2.1)mfcol c(nr,nc)的向量,分割绘图窗口为nr行nc列的矩阵布局,按列次序
使用各子窗口
mfcol c(nr,nc)的向量,分割绘图窗口为nr行nc列的矩阵布局,按列次序使用各
子窗口
同上,但是按行次序使用各子窗口
控制符号的类型,可以是1到25的整数,也可以是""里的单个字符
控制文字大小的整数,单位为磅(points)
图像分割
layout函数
函数layout把当前的图形窗口分割为多个部份,图形将依次显示在各
部分中。它主要的自变量是一个元素都是整数值的矩阵,元素指示子
窗口(sub-windows)的编号。
1
3
2
4
1
4
2
3
1
3
5
2
4
6
5
6
图像分割
mat <- matrix(1:4, 2, 2)
> mat
[,1] [,2]
[1,] 1 3
[2,] 2 4
>layout(mat)
>layout.show(4)
x<-seq(0,2*pi,0.1)
plot(x,sin(x))
plot(x,cos(x))
plot(x,2*x+3)
plot(x,x*0+3)
1
3
2
4
图像分割
具有相同序号的图块合并
mat <- matrix(c(1:3, 3), 2, 2)
> mat
[,1] [,2]
[1,] 1 3
[2,] 2 3
>layout(mat)
>layout.show(3)
通过widths与heights指定比例
> m <- matrix(1:4, 2, 2)
> layout(m, widths=c(1, 3),
heights=c(3, 1))
> layout.show(4)
1
3
2
1
3
2
4
小试牛刀:来到黄石
为了实践R语言绘图方法,我们选用一个植物数据集,这些数据来自
Sikkink等人(2007)年对两个温带群落,美国黄石国家公园和国家野牛
保护区草原数据的检测分析。这项研究的目的是确定过去一段时间丛生
禾草群落的的生物多样性是否改变,如果改变,那么是否和环境因素有
关。针对我们的研究目的,我们仅使用黄石公园的数据。为了量化生物多
样性,研究者计算了物种丰富度,这种丰富度以及每个地点的不同种群
数量来定义。研究者识别了大约90个物种,这些数据来自8个时间截面,
每个截面大约是4~10年,总共选取58个观察值。
数据文件:Vegetation2.txt
选定文件所在的文件夹并导入数据
setwd("d:/data/RBook/")
Veg <- read.table(file="Vegetation2.txt",header =TRUE)
TransectName Samples
A_22_58
1
A_22_62
2
A_22_67
3
A_22_74
4
A_22_81
5
A_22_94
6
A_22_02
7
C_22_58
8
…
Transect
1
1
1
1
1
1
1
2
…
Time
1958
1962
1967
1974
1981
1994
2002
1958
…
R
8
6
8
8
10
7
6
5
…
ROCK
27
26
30
18
23
26
39
25
…
将物种丰度(R)对土壤裸露度(BARESOIL)作图
plot(x = Veg$BARESOIL, y = Veg$R,)
THE END
LITTER
30
20
24
35
22
26
19
26
…
ML
0
0
0
0
4
0
4
0
…
BARESOIL
26
28
30
16
9
23
19
33
…
….
…
…
…
…
…
…
…
…
..
More:
 增加标题与横纵坐标标签。
 根据不同的采样时间,选择不同的颜色或符号绘图。
 选择更多的变量相互作图,并绘制在一张图像上。
数据文件:Vegetation2.txt
The End