3 数据可视化

数据可视化

1 R的图形组成和图形参数

1.1 图形组成

R的图形包括多个部分组成,必备成分:

  • 主体
  • 坐标轴
  • 坐标标题
  • 图标题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CLn7vRFH-1666010947069)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221017152837666.png)]

1.2 图形参数

图形参数主要有以下四类:

  • 图形主体部分的参数:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cw7H982E-1666010947070)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221017152952245.png)]

符号类型pch和线条线型对应如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ske6mlpN-1666010947071)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221017153039389.png)]

  • 坐标轴部分参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Ht3sCrz-1666010947072)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221017153154152.png)]

  • 坐标标题的参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YfoPUWS2-1666010947072)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221017153257294.png)]

  • 图标题参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XaG5fXR5-1666010947072)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221017153321255.png)]

1.3 图形布局

图形边界是指设置图形上边界、下边界、左边界、右边界的宽度。可以使用mar、mai表示,分别是英分和英寸为单位

设计布局的函数是[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hXAZGyWB-1666010947073)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221017153810937.png)]

1.4 修改图形参数

  • 如果希望之后都使用统一的参数绘图,可以在绘图之前使用par函数设置参数

    之后的图形都采用此参数

    drawp = par()
    par(pch=3, lty=2, mar=c(1, 0.5, 1, 2))
    ##换原默认参数
    par(drawp)
    

2 单变量分布特征

2.1 核密度曲线

核密度估计是从样本数据出发估计密度函数的方法。

####直方图和带正态分布曲线的直方图,核密度图
ClaimData<-read.table(file="车险数据.txt",header=TRUE)
DrawL<-par()
par(mfrow=c(2,1),mar=c(4,6,4,4))
hist(ClaimData$nclaims,xlab="理赔次数",ylab="频率",main="车险理赔次数直方图",cex.lab=0.7,freq=FALSE,ylim=c(0,0.1))
MeanTmp=mean(ClaimData$nclaims,rm.na=TRUE)
SdTmp=sd(ClaimData$nclaims)
d=seq(from=min(ClaimData$nclaims),to=max(ClaimData$nclaims),by=0.1)
lines(x=d,y=dnorm(d,MeanTmp,SdTmp),lty=2,col=2)
###添加核密度曲线
lines(density(ClaimData$nclaims),lty=4,col=4)
plot(density(ClaimData$nclaims),type="l",main="车险理赔次数核密度图",xlab="理赔次数",ylab="密度",cex.lab=0.7)
rug(jitter(ClaimData$nclaims),side=1,col=2) 
par(DrawL)

hist()函数是绘制直方图

density()函数是获得核密度估计函数

lines(x=横坐标, y=纵坐标)用于在已有图像上添见曲线

plot(数值型向量或者矩阵,type=线的类型)绘图函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x3ZyGm6l-1666010947074)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221017202215372.png)]

2.2 小提琴图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BdGjtP6g-1666010947074)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221017202449767.png)]

horizontal参数决定图是竖直还是水平的,第二种格式可以绘制多个变量的

############小提琴图
install.packages("vioplot")
library("vioplot")
ClaimData<-read.table(file="车险数据.txt",header=TRUE)
DrawL<-par()
par(mfrow=c(2,1),mar=c(4,6,4,4))
vioplot(ClaimData$nclaims,horizontal=TRUE)   ##绘制全部观测的小提琴图
####添加图标题等
title(main="车险理赔次数的小提琴图",cex.main=0.8,xlab="理赔次数",ylab="全部观测",cex.lab=0.7)
###绘制各车型的小提琴图
TmpD1<-ClaimData$nclaims[ClaimData$vehiclegroup=="A"]
TmpD2<-ClaimData$nclaims[ClaimData$vehiclegroup=="B"]
TmpD3<-ClaimData$nclaims[ClaimData$vehiclegroup=="C"]
TmpD4<-ClaimData$nclaims[ClaimData$vehiclegroup=="D"]
LabX<-c("A","B","C","D")
Lo<-vioplot(TmpD1,TmpD2,TmpD3,TmpD4,names=LabX)  #画图同时得到关键位置坐标
text(x=1:4,y=Lo$upper,labels=c(length(TmpD1),length(TmpD2),length(TmpD3),length(TmpD4)),
  srt=90)    #在指定位置添加文字信息
title(main="各车型车险理赔次数的小提琴图",cex.main=0.8,xlab="车型",ylab="理赔次数",cex.lab=0.7)
par(DrawL)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f4KYoOVu-1666010947075)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221017202629504.png)]

两侧曲线是核密度图,空心圆为中位数

2.3 克利夫兰图

克利夫兰图可以显示数据中的异常吃

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VbYWdoG5-1666010947075)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221017203659648.png)]

可以使用legend函数添加图例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i4lqIzaL-1666010947076)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221017203807643.png)]

###########克利夫兰点图
DrawL<-par()
ClaimData<-read.table(file="车险数据.txt",header=TRUE)
par(mfrow=c(2,1),mar=c(4,6,4,4))
dotchart(ClaimData$nclaims,main="车险理赔次数的克利夫兰图",cex.main=0.8,xlab="理赔次数",ylab="观测编号",cex.lab=0.8)
AvN<-tapply(ClaimData$nclaims,INDEX=ClaimData$vehiclegroup,FUN=mean)  #计算各车型理赔次数的平均值
dotchart(ClaimData$nclaims[order(ClaimData$vehiclegroup)],main="各车型车险理赔次数的克利夫兰图",cex.main=0.8,xlab="理赔次数",cex.lab=0.8,groups=ClaimData$vehiclegroup,gdata=AvN,gpch=17)
legend("bottomright",title="点型说明",c("观测值","均值"),pch=c(1,17),bg="white",cex=0.5)
par(DrawL)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UiR41mIm-1666010947076)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221017203910109.png)]

3 多变量分布特征

3.1 曲面图和等高线图

##############二元正态分布密度图
mu1<-0
mu2<-0
ss1<-10 
ss2<-10 
rho<-0.7
MyDen<-function(x,y) 
{
 t1<-1/(2*pi*sqrt(ss1*ss2*(1-rho^2)))
 t2<--1/(2*(1-rho^2))
 t3<-(x-mu1)^2/ss1
 t4<-(y-mu2)^2/ss2
 t5<--2*rho*((x-mu1)*(y-mu2))/(sqrt(ss1)*sqrt(ss2))
 return(t1*exp(t2*(t3+t4-t5)))
}
x<-seq(-10,10,length=50) 
y<-x                     
z<-outer(x,y,FUN=MyDen)   
par(mfrow=c(2,2),mar=c(6,4,4,1))
persp(x,y,z,main="二元正态分布密度曲面图",theta=30,phi=20,expand=0.5,shade = 0.5,xlab="X",ylab="Y",zlab="f(x,y)")
contour(x,y,z,main="二元正态分布密度等高线图")     

###########其他曲面图
Myf<-function(x,y) {
  r<-sqrt(x^2+y^2)
  r<-10*sin(r)/r
  return(r)
}
x<-seq(-10,10,length=30)
y<-x
z<-outer(x,y,Myf)
z[is.na(z)]<-1   
persp(x,y,z,main="曲面图",theta=30,phi=30,expand=0.5) 
contour(x,y,z,nlevels=10,main="等高线图")    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MWr4EUhh-1666010947076)(C:\Users\ALANSHAO\AppData\Roaming\Typora\typora-user-images\image-20221017204750080.png)]

y<-x
z<-outer(x,y,Myf)
z[is.na(z)]<-1
persp(x,y,z,main=“曲面图”,theta=30,phi=30,expand=0.5)
contour(x,y,z,nlevels=10,main=“等高线图”)


[外链图片转存中...(img-MWr4EUhh-1666010947076)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值