3-6Lattice绘图系统之实践
library(lattice)
xyplot(Temp~Ozone,data=airquality)
airquality$Month<-factor(airquality$Month)(Month变成了分类变量)
xyplot(Temp~Ozone|Month,data=airquality,layout=c(5,1))(在不同月份下前面2个变量的关系,外显的布局是5行1列) Lattice系统适合做交互作用。
q<-xyplot(Temp~Wind,data=airquality)
print(q)
set.seed(1)(设置了一个种子点,意义是每次产生的随机数是一样的 非常重要,只要使用随机数就要设置)
x<-rnorm(100)(标准正态分布抽取的随机数)
f<-rep(0:1,each=50)(f变量只有0和1,每个数出现50次)
y<-x+f-f*x+rnorm(100,sd=0.5)(让x和y之间的关系与f变量有交互)
f<-factor(f,labels=c("Group1","Group2"))
xyplot(y~x|f,layout=c(2,1))
xyplot(y~x|f,panel=function(x,y){
panel.xyplot(x,y)
panel.abline(v=mean(x),h=mean(y),lty=2)
panel.lmline(x,y,col="red")})(在x均值在的地方画一条垂线,在y均值在的地方画一条水平线)
11111
xyplot(y~x|f,panel=function(x,y))
panel=function(x,y)自定义一个函数,函数体需要用花括号括起来,首先调用默认的panel函数→panel.xyplot(x,y)
panel.abline(v=mean(x),h=mean(y),lty=2)
abline 表示添加直线,v代表垂直的直线,h表示水平的直线,lty线的类型
panel.lmline(x,y,col="red")添加一条红色的拟合回归线
先把f转换为因子
0,1分别命名为“Group1”和“Group2”
xuplot是求y与x在f水平下的关系,并将面板划分为一行两列,有两个水平
set.seed(1)设置一个种子数1
从标准正态分布中抽取100个数赋值给x
f<-rep(0:1,each=50) f这个变量只包含0,1这两个数,但是这两个数每个重复50次
y<-x+f-f*x+rnorm(100,sd=0.5)
x+f-f*x表示xf有交互,加上一个误差rnorm(100,sd=0.5)从正态分布中抽取100个数值,平均值为0,标准差是0.5(默认的时候标准差是1)
设置种子点的意义在于让每次产生的随机数是一样的,只要使用随机数切记要使用种子点
xyplot如果不存储在变量中会被直接打印出来,存在变量中需要print打印出来,才会出来
library(lattice)调用这个包
xyplot(Temp~Ozone,data=airquality),关系中左侧是必须的,右侧不是必须的,不考虑交互关系时,右侧不是必须的
若要显示交互关系,需要将月份转变成factor因子 。
layout=c(5,1)输出五行一列
lattice系统特别适合呈现交互
set.seed(1)设置种子点可以使每次产生的随机数一样,所以只要使用随机数,就切记要设置种子点
v代表垂直的直线,h代表水平直线,panel函数可以个性化设置面板,函数体是需要用{}括起来的,每个函数单独一行显示
利用factor函数将某一变量设置为分类变量,layout函数可对绘图进行布局
print可以将类对象打印显示出来
lattice绘图系统的使用
install.packages("lattice")
library(lattice)#调用lattice函数
xyplot(Temp~Ozone,data=airquality)
airquality$Month<-factor(airquality$Month)#将month转化为分类变量
xyplot(Temp~Ozone|Month,data=airquality,
layout=c(5,1))#考察不同月份下臭氧和温度之间的关系
#?layout
q<-xyplot(Temp~Ozone,data=airquality)#先返回类对象
print(q)#再被打印出来
#pannel函数
set.seed(1)#设置种子点,使每次产生的随机数是一样的,当使用随机数时,很重要。
x<-rnorm(100)
f<-rep(0:1,each=50)#f包含0和1两个数,且每个数各存在50个
y=x+f-f*x+rnorm(100,sd=0.5)#使x和y存在交互作用
f<-factor(f,labels = c("group1","group2"))
xyplot(y~x|f,layout=c(2,1))#自定义面板风格xyplot(y~x|f,panel = function(x,y){panel.xyplot(x,y)#自定义函数panel panel.abline(v=mean(x),h=mean(y),lty = 2)#abline画线函数,在水平和竖直方向上的下x,y的平均值处画线 panel.lmline(x,y,col="red")}#绘制回归线并且设置颜色 )
layout=c(5,1)生成的图是5列一行
#Lattice绘图系统
install.packages("lattice")
library(lattice)
xyplot(Temp~Ozone,data=airquality)
airquality$Month <-factor(airquality$Month) #将Month从数值变量转换为分类变量
xyplot(Temp~Ozone|Month,data=airquality,layout=c(5,1))
q<-xyplot(Temp~Wind,data=airquality) #并没有任何图形产生
print(q) #lattice函数首先返回类对象,是print函数把这个类对象打印出来,如果不把xyplot存到一个变量中,其类对象会被自动打印出来
set.seed(1)
#设置一个种子点,其意义在于每次产生的随机数是一样的,如果不设置种子点,其他人无法生成和你一模一样的随机数,无法重现你分析的过程,无法检查你的错误,
x<-rnorm(100) #标准正太分布中100个随机数
f<-rep(0:1, each=50)
#只包含0和1两个数,每个出现次数50次,所以f中一共100个数
y<-x+f-f*x+nrom(100,sd=0.5)
f<-factor(f, labels=c("Group1","Group2"))
#Lattice绘图系统
install.packages("lattice")
library(lattice)
xyplot(Temp~Ozone,data=airquality)
airquality$Month <-factor(airquality$Month) #将Month从数值变量转换为分类变量
xyplot(Temp~Ozone|Month,data=airquality,layout=c(5,1))
q <- xyplot(Temp~Wind,data=airquality)
print(q)
set.seed(1)#每次产生的随机数相同
x <- rnorm(100)#随机数服从正态分布
f <- rep(0:1,each=50)
y <- x+f-f*x+rnorm(100,sd=0.5)
f <- factor(f,labels=c("Group1","Group2"))
xyplot(y~x|f,layout=c(2,1))
xyplot(y~x|f,panel=function(x,y){
panel.xyplot(x,y)
panel.abline(v=mean(x),h=mean(y),lty=2)
panel.lmline(x,y,col="red") })
使用随机数切记要生成种子点,以便重现结果。
set.seed(1)---使每次产生的随机变量是相同的