StupidBeauty
Read times:6344Posted at: - no title specified

R教程翻译:散点图,Scatterplots

简单散点图

R 中可使用 多种 方式来创建散点图。最基本的方式就是使用 plot( x y ) 函数,其中, x y 都是由数值组成的向量,表示要绘制到图像中去的那些(x,y)点。

# 简单散点图

attach(mtcars)

plot(wt, mpg, main= "Scatterplot Example"

xlab= "Car Weight ", ylab= "Miles Per Gallon ", pch= 19)

# 加入拟合线

abline(lm(mpg~wt), col= "red") # 回归线 (y~x) 

lines(lowess(wt,mpg), col= "blue") # 本地加权散点平滑(lowess)线 (x,y)

car 软件包中的 scatterplot( ) 函数提供了狠多增强功能,包括:线条拟合、带边距的盒状绘图、按照某个因子的条件绘图、以及交互式坐标点识别。这些功能都是可选的。

# 加强式的散点图,按照汽车的汽缸数量将每加仑汽油能行驶的英里数(MPG)与重量进行对比

library(car) 

scatterplot(mpg ~ wt | cyl, data=mtcars, 

xlab= "Weight of Car", ylab= "Miles Per Gallon"

main= "Enhanced Scatter Plot"

labels= row.names(mtcars))

散点图矩阵

最少4个函数可用于创建散点图矩阵。数据分析师一定会狠喜欢散点图矩阵!

# 基本的散点图矩阵

pairs(~mpg+disp+drat+wt,data=mtcars, 

main= "Simple Scatterplot Matrix")

lattice 软件包,提供了一些选项,可基于某个因子来按条件绘制散点图矩阵:

# 使用lattice 软件包绘制的散点图矩阵

library(lattice)

splom(mtcars[c(1,3,5,6)], groups=cyl, data=mtcars,

panel=panel.superpose, 

key= list(title= "Three Cylinder Options",

columns= 3,

points= list(pch=super.sym$pch[1 : 3],

col=super.sym$col[1 : 3]),

text= list(c("4 Cylinder","6 Cylinder","8 Cylinder"))))

car 软件包,可以基于某个因子来条件性地绘制散点图矩阵,还可以可选地包含:本地加权散点平滑和线性最佳拟合线,还有盒状图、密度,或者在对角线上加上直方图,还可以在单元格的边距处加上某些图。

# 使用car 软件包绘制的散点图矩阵

library(car)

scatterplot.matrix(~mpg+disp+drat+wt|cyl, data=mtcars,

main= "Three Cylinder Options")

gclus 软件包,提供了一些选项,可用于重排那些变量,使得,那些拥有较高相关性的变量会更靠近对角线。它还可以对单元格进行着色,以反映相关性的大小。

# 使用glus 软件包绘制的散点图矩阵

library(gclus)

dta <- mtcars[c(1,3,5,6)] # get data 

dta.r <- abs(cor(dta)) # get correlations

dta.col <- dmat.color(dta.r) # get colors

# reorder variables so those with highest correlation

# are closest to the diagonal

dta.o <- order.single(dta.r) 

cpairs(dta, dta.o, panel.colors=dta.col, gap= .5,

main= "Variables Ordered and Colored by Correlation" )

高密度散点图

如果有了太多的数据点,并且有明显的重叠的话,散点图的用处就降低了。当发生这种事的时候,可以有多种处理方式。 hexbin 软件包中的 hexbin(x, y) 函数,提供了二元变量的容器,将数据收纳到六角形的单元格中(它看起来比它的名字更好看)

# 带有容器的高密度散点图

library(hexbin)

x <- rnorm(1000)

y <- rnorm(1000)

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

plot(bin, main= "Hexagonal Binning")

对于有显著的数据点重叠的散点图,另一种处理方式是 sunflowerplot 。参考 help(sunflowerplot) 以了解更多细节。

最后,妳可以将散点图保存为 PDF ,还可以使用半透明的颜色,以让那些重叠的数据点能够显示出来(这个创意来自于B.S. Everrit的 HSAUR )

# 有半透明效果的高密度散点图

pdf("c:/scatterplot.pdf"

x <- rnorm(1000)

y <- rnorm(1000

plot(x,y, main= "PDF Scatterplot Example", col= rgb(0,100,0,50,maxColorValue= 255), pch= 16)

dev.off()

注意 妳可以使用 col2rgb( ) 函数来获取到 R 颜色的对应的 rbg 值。例如, col2rgb(" darkgreen ") 会得到r=0, g=100, b=0。然后,将透明级别的值作为第4个数字添加到颜色向量中。值为0则表示完全透明。参考 help(rgb) 以了解更多信息。

3维散点图

妳可使用 scatterplot3d 软件包来创建3维的散点图。使用 scatterplot3d( x , y , z ) 函数即可。

# 3维散点图

library(scatterplot3d)

attach(mtcars)

scatterplot3d(wt,disp,mpg, main= "3D Scatterplot")

# 带有颜色和竖直垂线的3维散点图

library(scatterplot3d) 

attach(mtcars) 

scatterplot3d(wt,disp,mpg, pch= 16, highlight.3d= TRUE,

type= "h", main= "3D Scatterplot")

# 带有颜色、竖直垂线和回归平面的3维散点图

library(scatterplot3d) 

attach(mtcars) 

s3d <- scatterplot3d(wt,disp,mpg, pch= 16, highlight.3d= TRUE,

type= "h", main= "3D Scatterplot")

fit <- lm(mpg ~ wt+disp) 

s3d$ plane3d(fit)

旋转3维散点图

妳还可以使用 rgl 软件包中的 plot3D( x ,  y ,  z ) 函数来创建一个交互式的3维散点图。它会创建一个自动旋转的3维散点图,可使用鼠标来手动旋转。前3个参数分别是 x y z 数值向量,表示着要绘制的点集。 col= size= 分别控制着点的颜色和尺寸。

# 自转的3维散点图

library(rgl)

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

妳可以使用 Rcmdr 软件包中的 scatter3d( x y z ) 函数来实现类似的效果。

# 另一个旋转的3维散点图

library(Rcmdr)

attach(mtcars)

scatter3d(wt, disp, mpg)

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands

 
Recent comments
2017年4月~2019年4月垃圾短信排行榜Posted at:Thu Sep 26 04:51:48 2024
Qt5.7文档翻译:QWebEngineCookieStore类,QWebEngineCookieStore ClassPosted at:Fri Aug 11 06:50:35 2023盲盒kill -9 18289 Grebe.20230517.211749.552.mp4