01
多元数据的R语言调用
R内置数据包dataset提供了大量的数据,使用R的内置数据集很方便,通常只要给出数据集名即可,而外部数据主要有电子表格、数据库、文本文件等形式。
1.从剪切板读取
Excel与R语言之间的数据交换过程:
(2)在R中使用
dat<-read.table("clipboard",header=T)
这里,dat为读入的R中数据集,clipboard为剪切板,header=T意味着读入变量名。F表示不读变量名,即不读表头。
2.从文件文本读取
读入文本数据的命令是read.table,但它对外部文件有特定的格式要求:第一行可以有该数据框的各变量名,随后的行中条目是各个变量的值。
将读取的txt文件放在工作目录下,查询工作目录使用函数getwd()。或者更改工作目录到文件所在位置。
如果文件不在工作目录下,写绝对路径并使用“\\”,如:c:\\tmp\\readtxt.txt
3.从Excel文件读取
library(RODBC)
Rcode<-odbcConnectExcel("Rcode.xls")
data<-sqlFetch(Rcode,"data")
data
codedata<-sqlFetch(Rcode,"codedata")
codedata
close(Rcode)
02
基于R语言的多元数据绘图
1.条形图
条形图绘制函数barplot(X,…),其中X为数值向量或数据框。
X=read.table("clipboard",header=T)
barplot(apply(X,1,mean)) ##按行作均值图
barplot(apply(X,2,mean)) ##按列做均值图
barplot(apply(X[,2:8],2,mean)) ##去掉“食品”按列作的均值图
barplot(apply(X,2,median)) ##按列做中位数图
barplot(apply(X,2,mean)) ##按列作均值图
2.饼图
pie(apply(X,2,mean)) ##按列作均值图
boxplot(X)
boxplot(X,horizontal=T) ##水平放置horizontal=T
4.星相图
星相图绘制stars(x,full=TURE,draw.segment=FALSE,….)
其中,x为数据矩阵或数据框。full为图形形状,full=T为圆形,full=F为半圆。draw.segments为分支形状:draw.segments=T为圆形,draw.segments=F为半圆。缺省为:segment=F。
stars(X,full=T)
stars(X,full=F)
stars(X,full=T,draw.segments=T)
stars(X,full=F,draw.segments=T)
在作图函数中,有两类作图函数。一类是高水平作图函数:可产生图形,有坐标轴以及图和坐标的说明文字等;一类是低水平作图函数:自身无法生成图形,只能在高水平作图函数产生的图形的基础上,增加新的图形。
1.高水平绘图函数
plot(),pairs(),qqnorm(),qqline(),hist(),contour()等。
(1)plot()函数可绘制数据的散点图、曲线图等。
A. plot(x,y),其中x和y是向量,生成x和y的散点图。
x1=c(171,175,159,155,152,158,154,164,168,166,159,164)
x2=c(57,64,41,38,35,44,41,51,57,49,47,46)
plot(x1,x2)
B.plot(x),其中x是一时间序列,生成时间序列图形。如果x是向量,则产生x关于下标的散点图;如果x是复向量,则绘出复数的实部与虚部的散点图。
C.plot(f),plot(f,y)其中f是因子,y是数值向量。第一种格式生成f的直方图,第二种格式生成y关于f水平的箱线图。
例:利用四种不同配方的材料A1、A2、A3、A4生产出来的元件,测得寿命如下表所示:
绘出四种不同配方材料寿命的箱线图。
y<-c(1600, 1610, 1650, 1680, 1700, 1700, 1780, 1500, 1640,
1400, 1700, 1750, 1640, 1550, 1600, 1620, 1640, 1600,
1740, 1800, 1510, 1520, 1530, 1570, 1640, 1600)
f<-factor(c(rep(1,7),rep(2,5), rep(3,8), rep(4,6)))
plot(f,y)
(2)显示多变量数据
(3)显示图形
其他高水平的绘图函数:
A.qqnorm(),qqline(),绘制QQ散点图。
B.hist(),绘制直方图。
C.dotchart(x),构造数据x的点图。例如:R中自带数据VADeaths,是弗吉尼亚州在1940年的人口死亡率。
dotchart(VADeaths)
x<-seq(0,2800, 400)
y<-seq(0,2400,400)
z<-scan()
1: 1180 1320 1450 1420 1400 1300 700 900
9: 1230 1390 1500 1500 1400 900 1100 1060
17: 1270 1500 1200 1100 1350 1450 1200 1150
25: 1370 1500 1200 1100 1550 1600 1550 1380
33: 1460 1500 1550 1600 1550 1600 1600 1600
41: 1450 1480 1500 1550 1510 1430 1300 1200
49: 1430 1450 1470 1320 1280 1200 1080 940
57:
Read 56 items
>
Z<-matrix(z, nrow=8)
image(x, y, Z)
contour(x, y, Z, levels = seq(min(z), max(z), by = 80))
persp(x, y, Z)
我们可以看到,图有两个缺点:一是过于粗糙,其原因是由于数据量过少造成的,如果数据量稍大一些,图形质量将会有很大的改善;二是三维图的观察角度不理想,这是由于只用到函数中各种参数的缺省值状态,如果改变某些参数的值,图形的观察角度也会随之改变。例如:
persp(x, y, Z,theta=30,phi=45,expand=0.7)
2.高水平绘图中的命令:
在高水平绘图函数中,可以加一些命令,不断完善图的内容,或增加一些有用的说明。
(1)图中的逻辑命令
add=T,表示所绘图在原图上加图,缺省为add=F,即新的图替换原图。
axes=F,表示所绘制图形没有坐标轴,缺省值为axes=T。
(2)数据取对数
log=”x”表示x轴数据取对数,log=”y”表示y轴数据取对数,log=”xy”表示x轴与y轴数据同时取对数。
(3)type命令
type=”p”,散点图(缺省);type=”l”,实线图;type=”b”,所有点被实线连接;type=”o”实线通过所有的点;type=”h”,绘出点到x轴的竖线;type=”s”,绘制阶梯形曲线;type=”n”,不绘制任何点或曲线。
(4)其他图形参数
A.pch,指定绘制点时使用的符号:
B.cex指定符号的大小,cex是一个数值,表示绘图符号相对于默认大小的倍数。
C.lty指定线条类型:
D.lwd指定线条宽度,同cex。
E.col指定绘图颜色,可以写数值,也可以写”red”之类的全称。函数colors()可以返回左右可用颜色的名称,R中还有其他创建颜色的函数,如rainbow()、heat.colors()、gray()等。
(5)图中的字符串
xlab=””,引号内内容是x轴的名字;ylab=””,引号内容是y轴的名字;mean=””, 引号内内容是图标题,sub=””, 引号内内容是子图的说明。
3.低水平作图函数
有时候高水平作图不能完全达到目的,需要低水平函数予以补充。低水平函数所作的图形是在高水平作图函数做绘制图形的基础之上,增加新的图形。
低水平作图函数有:points()、lines()、text()、abline()、lengend()、title()、axis()等。
x=c(171,175,159,155,152,158,154,164,168,166,159,164)
y=c(57,64,41,38,35,44,41,51,57,49,47,46)
(1)加点与线的函数
points(),作用是在已有图上加点,命令points(x,y),其功能相当于plot(x,y)。
lines(),作用是在已有图上加线,命令lines(x,y),其功能相当于plot(x,y,type=”l”)。
(2)在点处加标记
text(),作用是在图上加标记,命令格式为:text(x,y,labels,…)
其中,x和y是数据向量,labels可以是整数,也可以是字符串,在缺省状态下labels=1:length(x)。例如,需要绘制(x,y)的散点图,并将所有点用数字标记,命令为:plot(x,y);text(x,y)
(3)在图上加直线
函数abline()可以在图上加直线,使用方法有以下格式:
A.abline(a,b),表示画一条y=bx+a的直线。
B.abline(h=y),表示画出一条过y的水平直线。
C.abline(v=x),表示画出一条过x的垂直直线。
(4)在图上加标记、说明或其他内容
在图上加说明文字、标记或其他内容,用法是:
title(main=””,sub=””,…),主标题在图的顶部,子标题在图的底部。
在坐标轴上加标记、说明或其他内容,用法是:
axis(side,…),side表示边,1、2、3、4分别表示内容放在下、左、上、右。
在图上加图例,用法是:
lengend(location,title,…),location是指定图例位置,title是图例标题。例:
dose<-c(20,30,40,45,60)
drugA<-c(16,20,27,40,60)
drugB<-c(15,18,25,31,40)
plot(dose,drugA,type="b",pch=15,lty=1,col="red",ylim=c(0,60),main="Drug A vs. Drug B",xlab="Drug Dosage",ylab="Drug Response")
lines(dose,drugB,type="b",pch=17,lty=2,col="blue")
abline(h=c(30),lwd=1.5,lty=2,col="gray")
legend("topleft",inset=0.05,title="Drug Type",c("A","B"),lty=c(1,2),pch=c(15,17),col=c("red","blue"))
—END—