日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

R绘图 第十篇:绘制散点图(高级)

發布時間:2023/12/13 综合教程 40 生活家
生活随笔 收集整理的這篇文章主要介紹了 R绘图 第十篇:绘制散点图(高级) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

散點圖用于描述兩個連續性變量間的關系,三個變量之間的關系可以通過3D圖形或氣泡來展示,多個變量之間的兩兩關系可以通過散點圖矩陣來展示。

一,添加了最佳擬合曲線的散點圖

使用基礎函數plot(x,y)來繪制散點圖,其中x和y是數值型向量,代表著圖形中的點(x,y)

attach(mtcars)
plot(wt,mpg,
     main='Basic Scatter plot of MPG vs Weight',
     xlab='Car Weight(1bs/1000)',
     ylab='Miles Per Gallon',
     pch=19)
abline(lm(mpg~wt),col='red',lwd=2,lty=1)
lines(lowess(wt,mpg),col='blue',lwd=2,lty=2)

abline()函數用于添加最佳擬合的線性回歸直線;lowess()函數用于添加一條平滑曲線。

car包中的scatterplot()函數增強了散點圖的許多功能,它可以很方便地繪制散點圖,并能添加擬合曲線,邊界箱線圖和置信橢圓,還可以按子集繪圖和交互式地識別點。

library(car)
scatterplot(mpg~wt|cyl, data=mtcars,lwd=2,span=0.75,
            main='Scatter Plot of MPG vs Weight by # Cylinders',
            xlab='Weight of Car (lbs/1000)',
            ylab='Miles Per Gallon',
            legend.plot=TRUE,
            boxplots='xy')

參數注釋:

formula: 在該參數中,分組使用 | group_variable 來表示。例如,mpg ~ wt| cyl,表示的含義是按照cyl的水平分別繪制mpg和wt的關系圖

span:控制loess曲線中的平滑量,該參數值最大,擬合的效果越好。

legend.plot:設置為TRUE,表示在左上邊界添加圖例

boxplots:表示邊界線箱圖,有效值是x,y或xy,分別表示在x軸,y軸,或xy軸上繪制箱圖。

二,散點圖矩陣

基礎函數paris()函數用于創建散點圖矩陣,panel.cor()函數是自定義的面板函數(panel function),用于在矩陣的上三角顯示相關度;下三角使用系統預定義的平滑函數,用于在矩陣的下三角顯示散點圖和平滑曲線。

panel.cor <- function(x, y, digits = 2, prefix = "", cex.cor, ...)
{
  usr <- par("usr")
  on.exit(par(usr))
  par(usr = c(0, 1, 0, 1))
  r <- abs(cor(x, y))
  txt <- format(c(r, 0.123456789), digits = digits)[1]
  txt <- paste0(prefix, txt)
  if(missing(cex.cor)) cex.cor <- 0.8/strwidth(txt)
  text(0.5, 0.5, txt, cex = cex.cor * r)
}

pairs(~mpg+disp+drat+wt,data=mtcars,
      lower.panel=panel.smooth,
      upper.panel=panel.cor)

car包中的scatterplotMatrix()函數,用于生成散點圖矩陣,實際上,該函數是pairs()的封裝器,用于產生增強的散點圖矩陣,spm是該函數的別名。

scatterplotMatrix(x, 
    diagonal=c("density", "boxplot", "histogram", "oned", "qqplot", "none"), adjust=1, nclass,
    plot.points=TRUE, smoother=loessLine, smoother.args=list(), smooth, span,
    spread = !by.groups, reg.line=lm,
    transform=FALSE, family=c("bcPower", "yjPower"),
    ellipse=FALSE, levels=c(.5, .95), robust=TRUE,
    groups=NULL, by.groups=FALSE, 
    use=c("complete.obs", "pairwise.complete.obs"),
    labels, id.method="mahal", id.n=0, id.cex=1, id.col=palette()[1], id.location="lr",
    col=if (n.groups == 1) palette()[3:1] else rep(palette(), length=n.groups),
    pch=1:n.groups, lwd=1, lty=1, 
    cex=par("cex"), cex.axis=par("cex.axis"), cex.labels=NULL, 
    cex.main=par("cex.main"), 
    legend.plot=length(levels(groups)) > 1, legend.pos=NULL, row1attop=TRUE, ...)

參數注釋:

diagonal:對角線面板顯示的內容,
adjust:用于密度估計的相對帶寬(relative bandwidth),傳遞給density()函數
nclass:直方圖的封箱的數量,傳遞給hist()函數
plot.points:是否在非對角線繪制點,默認值是TRUE
smoother:用于制定函數,用于繪制平滑曲線,默認值是gamLine()函數,其他有效值是:loessLine,quantregLine
smoother.args:傳遞給smoother函數的參數,是一個list類型,例如,smoother.args==list(lty=2) 表示設置平滑(loess)擬合曲線使用虛線,而不是實線
smooth,span:這兩個參數是為了向后兼容,如果該參數設置為TRUE(默認值),那么smooter設置為LoessLine,使用LoessLine()函數繪制平滑曲線。如果設置span,那么該參數會被添加到smoother.args中。
spread:是否添加用于展示分散度和對稱信息的直線,默認值是by.groups參數值取反。
reg.line:默認值是lm,用于制定繪制回歸直線的函數
ellipse:在非對角線繪制數據密度橢圓
groups:對數據分組
by.groups:如果設置為TRUE,那么回歸直線按照分組來擬合(fit)

例如:使用mtcars數據集來繪制散點圖:

library(car)
scatterplotMatrix(~mpg+disp+drat+wt,data=mtcars,
                  spread=FALSE,smoother.args=list(lty=2),
                  main='Scatter Plot Matrix via car Package')

主對角線上放置了核密度曲線和軸須:

三,高密度散點圖

基礎包中的smoothScatter()函數,可以利用核密度估計生成用顏色密度來表示點密度的散點圖。

set.seed(1234)
n<-1000
c1 <- matrix(rnorm(n,mean=0,sd=1),ncol = 2)
c2 <- matrix(rnorm(n,mean=3,sd=5),ncol = 2)
mydata <- rbind(c1,c2)
mydata <- as.data.frame(mydata)
names(mydata) <- c('x','y')

with(mydata,smoothScatter(x,y,main='Scatter Plot Colored by Smoothed Densities'))

hexbin包中hexbin()函數,把二元變量的封箱放到六邊形單元格中,xbins是水平封箱的數量:

hexbin(x, y, xbins = 30)

該函數創建了一個hexbin對象,最基本的組成是一個cell和落入每個cell的點的數量count。

例如,使用hexbin()來繪制高密度散點圖,六邊形的顏色深度表示散點的密度。

library(hexbin)
with(mydata,
     {bin <- hexbin(x,y,xbins=50)
     plot(bin,main='Hex binning with 10000 Observations')})

四,三維散點圖

三維散點圖用于對三個變量之間的交互關系進行可視化,包scatterplot3d包中的函數scatterplot3d(),可以用于繪制三維散點圖:

scatterplot3d(x, y=NULL, z=NULL, color=par("col"), pch=par("pch"),
    main=NULL, sub=NULL, xlim=NULL, ylim=NULL, zlim=NULL,
    xlab=NULL, ylab=NULL, zlab=NULL, scale.y=1, angle=40,
    axis=TRUE, tick.marks=TRUE, label.tick.marks=TRUE,
    x.ticklabs=NULL, y.ticklabs=NULL, z.ticklabs=NULL,
    y.margin.add=0, grid=TRUE, box=TRUE, lab=par("lab"),
    lab.z=mean(lab[1:2]), type="p", highlight.3d=FALSE,
    mar=c(5,3,4,3)+0.1, bg=par("bg"), col.axis=par("col.axis"),
    col.grid="grey", col.lab=par("col.lab"), 
    cex.symbols=par("cex"), cex.axis=0.8 * par("cex.axis"),
    cex.lab=par("cex.lab"), font.axis=par("font.axis"),
    font.lab=par("font.lab"), lty.axis=par("lty"),
    lty.grid=par("lty"), lty.hide=NULL, lty.hplot=par("lty"),
    log="", asp=NA, ...)

參數注釋:

x,y,z:圖形的三個坐標
color:點的顏色
main,sub:主標題和小標題
xlim,ylim,zlim:用于指定(min,max),用于限制坐標軸上點的范圍。
xlab,ylab,zlab:各個坐標軸的標簽
scale.y:y軸相對于x和z的標度
angle:x和y軸之間的角度
axis:是否繪制坐標軸
tick.marks, label.tick.marks, x.ticklabs, y.ticklabs, z.ticklabs:刻度,刻度值
type:用于指定點的類型,p是點,l是線,h是在x-y平面中的垂線
highlight.3d:當type = "p" 或 type = "h"時,根據y坐標把點繪制成不同的顏色;其他情況下,使用color參數的值來繪制點的顏色。

例如,利用mtcars數據集,繪制wt,disp和mpg之間的三維散點圖:

library(scatterplot3d)
with(mtcars,
     scatterplot3d(wt,disp,mpg,
              pch=16,
              highlight.3d = TRUE,
              type='h',
              main='3D Scatter Plot with Vertical Lines'))

可旋轉的3D散點圖:

library(rgl)
with(mtcars,
     plot3d(wt,disp,mpg,col='red',size=5))

library(car)
with(mtcars,scatter3d(wt,disp,mpg))

五,氣泡圖

使用氣泡圖來展示三個變量之間的關系,先創建一個二維散點圖,然后用點的大小來代表第三個變量的值。

基礎包中的symbols()函數用于繪制氣泡圖:

symbols(x, y = NULL, circles=radius, squares, rectangles, stars, inches = TRUE, 
        fg = par("col"), bg = NA,
        xlab = NULL, ylab = NULL, main = NULL,
        xlim = NULL, ylim = NULL, ...)

參數注釋:

x,y,circles:circles用于指定氣泡的半徑

inches:比例因子,控制氣泡的大?。J最大圓圈為1 inch)

參考文檔:

scatterplotMatrix

總結

以上是生活随笔為你收集整理的R绘图 第十篇:绘制散点图(高级)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。