全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3466 3
2015-04-28

由于字数限制 上半部分

传送:https://bbs.pinggu.org/thread-3687466-1-1.html

主对角线的核密度曲线改成了直方图,并且直方图是以各车的气缸数为条件绘制的。图形包含主对角线中的直方图以及其他部分的线性和平滑拟合曲线。另外,子群(根据气缸数)通过符号类型和颜色来区分标注默认地,回归直线拟合整个样本,包含选项by.groups = TRUE将可依据各子集分别生成拟

合曲线。

gclus包中的cpairs()函数提供了一个有趣的散点图矩阵变种。它含有可以重排矩阵中变

量位置的选项,可以让相关性更高的变量更靠近主对角线。该函数还能对各单元格进行颜色编码

来展示变量间的相关性大小。首先考察相关性:

>cor(mtcars[c("mpg","wt","disp","drat")])

            mpg         wt       disp       drat

mpg   1.0000000 -0.8676594-0.8475514  0.6811719

wt   -0.8676594  1.0000000 0.8879799 -0.7124406

disp -0.8475514  0.8879799  1.0000000 -0.7102139

drat  0.6811719 -0.7124406-0.7102139  1.0000000

gclus包生成的散点图矩阵

> 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="variablesordered and colored by correlation"

+        )


散点图矩阵将根据新的变量顺序(myorder)和颜色列表(mycolors)绘图、上色,gap选项

使矩阵各单元格间的间距稍微增大一点。相关性最高的变量对是车重与排量,以及每加仑英里数与车重(标了红色,并且离主对角线最近)

11.1.2 高密度散点图

当数据点重叠很严重时,用散点图来观察变量关系就显得“力不从心”了。

> set.seed(1234)

> n<-10000

> c1<-matrix(rnorm(n,mean=0,sd=.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 observations"))


smoothScatter()函数可利用核密度估计生成用颜色密度来表示点分布的散点图,利用光平滑密度估计绘制的散点图。此处密度易读性更强:

> with(mydata,

+     smoothScatter(x,y,main="scatter plot with 10000observations"))


hexbin包中的hexbin()函数将二元变量的封箱放到六边形单元格中(图形比名称更直观)

> library(hexbin)

> with(mydata,{

+   bin<-hexbin(x,y,xbins=50)

+   plot(bin,main="hexagonalbinning with \n 10000 boservations")

+ })


IDPmisc包中的iplot()函数也可通过颜色来展示点的密度(在某特定点上数据点的

数目)

> library(IDPmisc)

> with(mydata,{

+   iplot(x,y,main="imagescatter plot with\n color indicating density")

+ })


11.1.3 三维散点图

假使你对汽车英里数、车重和排量间的关系感兴趣,可用scatterplot3d中的

scatterplot3d()函数来绘制它们的关系。Scatterplot3d(x,y,z) x被绘制在水平轴上,y被绘制在竖直轴上,z被绘制在透视轴上。

> library(scatterplot3d)

> attach(mtcars)

> scatterplot3d(wt,disp,mpg,main="basic 3d scatter plot")

注:如出现Error in plot.new() : figure margins too large 重启Rstudio即可


satterplot3d()函数提供了许多选项,包括设置图形符号、轴、颜色、线条、网格线、突

出显示和角度等功能

> scatterplot3d(wt,disp,mpg,

+               pch=16,

+               highlight.3d=TRUE,

+               type="h",

+               main="3dscatter plot with vertical lines")


添加一个回归面

> s3d<-scatterplot3d(wt,disp,mpg,

+               pch=16,

+               highlight.3d=TRUE,

+               type="h",

+               main="3dscatter plot with vertical lines")

> fit<-lm(mpg~wt+disp)

> s3d$plane3d(fit)


旋转三维散点图

用rgl包中的plot3d()函数创建可交互的三维散点图。你能通过鼠标对图形进

行旋转。函数格式为:plot3d(x,y,z)

其中xyz是数值型向量,代表着各个点。你还可以添加如col和size这类的选项来分别控制

点的颜色和大小。

> library(rgl)

> attach(mtcars)

> plot3d(wt,disp,mpg,col="red",size=5)


也可以使用Rcmdr包中类似的函数scatter3d():

> library(Rcmdr)

> attach(mtcars)

> scatter3d(wt,disp,mpg)


scatter3d()函数可包含各种回归曲面,比如线性、二次、平滑和附加等类型。图形默认添

加线性平面。另外,函数中还有可用于交互式识别点的选项。

11.1.4 气泡图

三维散点图来展示三个定量变量间的关系。现在介绍另外一种思路:先创建一个二维散点图,然后用点的大小来代表第三个变量的值。这便是气泡图(bubble plot)。

你可用symbols()函数来创建气泡图。该函数可以在指定的(x, y)坐标上绘制圆圈图、方形

图、星形图、温度计图和箱线图。以绘制圆圈图为例:

Symbols(x,y,circle=radius)

其中xyradius是需要设定的向量,分别表示xy坐标和圆圈半径。

用面积而不是半径来表示第三个变量,那么按照圆圈半径的公式(r = A / π )变

换即可:Symbols(x,y,circle=sqrt(z/pi))z即第三个要绘制的变量。

> attach(mtcars)

> r<-sqrt(disp/pi)

> symbols(wt,mpg,circle=r,inches=.3,#比例因子,控制着圆圈大小(默认最大圆圈为1英寸)

+         fg="white",bg="lightblue",

+         main="bubble plotwith point size\n proportional to displacement",

+         ylab="miles pergallon",

+         xlab="weight of car(lbs/1000")

> text(wt,mpg,rownames(mtcars),cex=.6)#可选函数,此处用来添加各个汽车的名称

> detach(mtcars)



求关注 求扩散亲朋好友


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-9-12 15:08:29

用R的rgl包画的三维图,如何才能把它保存为eps格式的图片(用写代码方式)?




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-9-13 10:24:19
图都挂了。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-4-10 23:43:48
请问R语言怎么画三维气泡图啊?求大神回答
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群