文章目录
  1. 中级绘图
    1. 1、散点图
      1. 1.1、散点矩阵图
      2. 1.2、高密度散点图
      3. 1.3、三维散点图
      4. 1.4、气泡图
    2. 2、折线图
    3. 3、相关图
    4. 4、马赛克图

中级绘图

1、散点图

1
2
3
4
5
6
7
#散点图
attach(mtcars)
plot(wt,mpg,main="基本散点图:英里数与车重",xlab = "车重(lbs/1000)",ylab="一加仑的公里数",pch=19)
#添加一条拟合的直线
abline(lm(mpg~wt),col="red",lwd=2,lty=1)
#添加一条拟合的平滑曲线
lines(lowess(wt,mpg),col="blue",lwd=2,lty=2)

1
2
library(car)
scatterplot(mpg~wt|cyl,data=mtcars,lwd=2,main="不同气缸英里数与车重",xlab="车重(lbs/1000)",ylab="每加仑距离",legend.plot=TRUE,id.method="identify",labels=row.names(mtcars),boxplots="xy")

1.1、散点矩阵图

1
2
3
4
#散点图矩阵
plot(~mpg+disp+drat+wt,data=mtcars)
#upper.panel = NULL只展现下三角,图形是对称的
pairs(~mpg+disp+drat+wt,data=mtcars,upper.panel = NULL)


1
2
3
4
#car包中的函数
library(car)
#主对角线添加了核密度曲线和轴须图
scatterplotMatrix(~mpg+disp+drat+wt,data=mtcars,spread=FALSE,lty.smooth=2,main="散点矩阵图")


1
2
#根据某变量进行分组展现by.groups = TRUE根据各个子集生成拟合图
scatterplotMatrix(~mpg+disp+drat+wt|cyl,data=mtcars,by.groups = TRUE,diagonal="histogram",main="散点矩阵图")

1
2
3
4
5
6
7
8
9
10
library(gclus)
mydata<-mtcars[c(1,3,5,6)]
#获取相关系数的绝对值矩阵
mydata.corr<-abs(cor(mydata))
#根据相关系数获取颜色矩阵
mycolors<-dmat.color(mydata.corr)
#根据相关系数重排变量
myorder<-order.single(mydata.corr)
cpairs(mydata,myorder,panel.colors = mycolors,gap=.5,main="根据相关性排序与着色图")

1.2、高密度散点图

1
2
3
4
5
6
7
8
9
set.seed(1234)
n<-10000
c1<-matrix(rnorm(n,mean = 0,sd=0.5),ncol=2)
c2<-matrix(rnorm(n,mean = 3,sd=2),ncol=2)
mydata<-rbind(c1,c2)
mydata<-as.data.frame(mydata)
names(mydata)<-c("x","y")
with(mydata,plot(x,y,pch=19,main="Scatter Plot with 10000 points"))

1
with(mydata,smoothScatter(x,y,main="Scatter Plot with 10000 points"))

1
2
3
4
5
library(hexbin)
with(mydata,{
bin<-hexbin(x,y,xbins=50)
plot(bin,main="六边形散点图")
})

1
2
library(IDPmisc)
with(mydata,iplot(x,y,main="颜色散点图"))

1.3、三维散点图

1
2
3
library(scatterplot3d)
attach(mtcars)
scatterplot3d(wt,disp,mpg,main="三维散点图")

1
2
#增加垂线
scatterplot3d(wt,disp,mpg,pch=16,highlight.3d=TRUE,type="h",main="三维散点图")

1
2
3
4
#增加回归面
s3d<-scatterplot3d(wt,disp,mpg,pch=16,highlight.3d=TRUE,type="h",main="三维散点图与回归面")
fit<-lm(mpg~wt+disp)
s3d$plane3d(fit)

1
2
3
4
#交互式可旋转三维图形
library(rgl)
attach(mtcars)
plot3d(wt,disp,mpg,col="red",size=5)

1
2
3
#另一种交互图,更好
library(Rcmdr)
scatter3d(wt,disp,mpg)

1.4、气泡图

1
2
3
4
5
##气泡图
r<-sqrt(disp/pi)
symbols(wt,mpg,circle=r,inches = 0.30,fg="white",bg="lightblue",main="气泡图,比例为排量",
ylab="每加仑公里数",xlab="自重(lbs/1000)")
text(wt,mpg,rownames(mtcars),cex=0.6)

2、折线图

  • 大多数内容第三章已经说明


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#转换为数值型
Orange$Tree<-as.numeric(Orange$Tree)
ntrees<-max(Orange$Tree)
xrange<-range(Orange$age)
yrange<-range(Orange$circumference)
plot(xrange,yrange,type="n",
xlab="树龄/天",ylab="直径/mm")
colors<-rainbow(ntrees)
linetype<-c(1:ntrees)
plotchar<-seq(18,18+ntrees,1)
for(i in 1:ntrees){
tree<-subset(Orange,Tree==i)
lines(tree$age,tree$circumference,
type="b",lwd=2,
lty=linetype[i],
col=colors[i],
pch=plotchar[i])
}
title("树图","折线示例")
legend(xrange[1],yrange[2],
1:ntrees,cex=0.8,col=colors,pch=plotchar,lty=linetype,title="Tree")

3、相关图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
##相关图
library(corrgram)
#order = TRUE矩阵行列均使用主成分分析进行了重新排序
#lower.panel与upper.panel设置下与上对角线元素类型
#panel.pie 用饼图的填充比例来表示相关性大小
#panel.shade 用阴影的深度来表示相关性
#panel.ellipse 绘制置信椭圆和平滑拟合曲线
#panel.pts 绘制散点图
#text.panel与diag.panel控制主对角线元素类型
#panel.minmax 输出变量的最大最小值
#panel.txt 输出的变量名字
corrgram(mtcars,order=TRUE,lower.panel = panel.shade,upper.panel = panel.pie,text.panel = panel.txt,
main="相关系数图")

1
2
3
4
5
6
corrgram(mtcars,order=TRUE,
lower.panel = panel.ellipse,
upper.panel = panel.pts,
text.panel = panel.txt,
diag.panel = panel.minmax,
main="相关系数图")

4、马赛克图

1
2
3
4
5
6
7
8
9
#马赛克图
library(vcd)
ftable(Titanic)
#马赛克图隐含着大量的数据信息。例如:
#(1)从船员到头等舱,存活率陡然提高;
#(2)大部分孩子都处在三等舱和二等舱中;
#(3)在头等舱中的大部分女性都存活了下来,而三等舱中仅有一半女性存活;
#(4)船员中女性很少,导致该组的Survived标签重叠(图底部的No和Yes)。
mosaic(Titanic,shade = TRUE,legend=TRUE)

文章目录
  1. 中级绘图
    1. 1、散点图
      1. 1.1、散点矩阵图
      2. 1.2、高密度散点图
      3. 1.3、三维散点图
      4. 1.4、气泡图
    2. 2、折线图
    3. 3、相关图
    4. 4、马赛克图