R语言:相关性可视化绘图+进阶散点图矩阵、高密度散点图、六边形封箱图、气泡图

本文介绍了如何通过各种图表(如散点图、气泡图、高密度散点图、马赛克图和相关系数矩阵)可视化二元和多元变量之间的关系,包括基础和进阶散点图,以及car、gclus和hexbin等包的使用。通过实例展示了如何在R语言中创建这些图形,以帮助理解和解读数据的相关性。
摘要由CSDN通过智能技术生成

相关性可视化绘图

以相关系数表示的二元关系:通过散点图和散点图矩阵进行可视化

(1)散点图:plot(x, y) 其中,x和y是数值型向量,代表着图形中的(x,y)点

(2)进阶散点图:car包中的scatterplot()函数

(3)散点图矩阵:

①pairs()函数:可以看到所有指定变量间的二元关系

②car包中的scatterplotMatrix()函数

③gclus包cpairs()函数

(4)高密度散点图:适于数据点重叠很严重时

①普通散点图+用颜色密度表示点分布的散点图:smoothScatter()

②六边形封箱图:hexbin包中的hexbin()函数

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

(5)气泡图:symbols()函数来创建

①用处:

  • 三维散点图来展示三个定量变量间的关系

  • 换种思路:先创建一个二维散点图

  • 然后用点的大小来代表第三个变量的值,即气泡图

②格式:symbols(x,y, circle=radius)

  • 其中x、y和radius是需要设定的向量,分别表示x、y坐标和圆圈半径

  • 该函数可以在指定的(x,y)坐标上绘制圆圈图、方形图、星形图、温度计图和箱线图

(6)相关系数矩阵

①用corrgram包中的corrgram()函数:用颜色来表示相关的程度

数据结构:11个变量,32个地区

  • 蓝色正相关。反过来,红色和从左上指向右下的斜杠表示变量呈负相关

  • 色彩越深,饱和度越高,说明变量相关性越大

  • 相关性接近于0的单元格基本无色

  • 本图为了将有相似相关模式的变量聚集在一起

  • 对矩阵的行和列都重新进行了排序(使用主成分法)

(7)马赛克图:有两个以上的类别型变量 vcd包中的mosaic()函数

  • 在马赛克图中,嵌套矩形面积正比于单元格频率,其中该频率即多维列联表中的频率

  • 颜色和/或阴影可表示拟合模型的残差值

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


代码如下

#相关关系的可视化

#1添加拟合曲线的简单散点图

attach(mtcars) 

plot(wt, mpg, 

     main="Basic Scatter plot of MPG vs. Weight", 

     xlab="Car Weight (lbs/1000)", 

     ylab="Miles Per Gallon ", pch=19) 

abline(lm(mpg~wt), col="red", lwd=2, lty=1) #abline()函数用来添加最佳拟合的线性直线

lines(lowess(wt,mpg), col="blue", lwd=2, lty=2)#lowess()函数则用来添加一条平滑曲线

#该平滑曲线拟合是一种基于局部加权多项式回归的非参数方法



#2进阶散点图: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, 

            id.method="identify", 

            boxplots="xy" )

#表达式mpg ~ wt | cyl表示按条件绘图(即按cyl的水平分别绘制mpg和wt的关系图

#span参数控制loess曲线中的平滑量。[越大,拟合得就越好]

#id.method:表明可通过鼠标单击来交互式地识别数据点

#legend.plot:表明在左上边界添加图例





#3散点图矩阵:pairs()函数

library(car) 

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

      main="Basic Scatter Plot Matrix")#图包含~右边的所有变量



#4散点图矩阵:scatterplotMatrix()函数

#线性和平滑(loess)拟合曲线被默认添加,主对角线处添加了核密度曲线和轴须图

library(car) 

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

                  spread=FALSE, smoother.args=list(lty=2), 

                  main="Scatter Plot Matrix via car Package")

#spread = FALSE选项表示不添加展示分散度和对称信息的直线

#smoother.args=list(lty=2)设定平滑(loess)拟合曲线使用虚线而不是实线



#5散点图矩阵:gclus包cpairs()函数

library(gclus)                                                   

mydata <- mtcars[c(1,3,5,6)]   #mtcars数据集中1356列                         

mydata.corr <- abs(cor(mydata)) #计算相关系数                                                                          

mycolors <- dmat.color(mydata.corr)                              

myorder <- order.single(mydata.corr)                             

cpairs(mydata,                                                   

       myorder, 

       panel.colors=mycolors, 

       gap=.5,                #gap=表示框框之间的间隙

       main="Variables Ordered and Colored by Correlation"

)



#6高密度散点图

#smoothScatter()用封箱、颜色和透明度来指明图中任意点上重叠点的数目

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="Scatterplot colored by Smoothed Densities"))

#set.seed()括号里面的参数可以是任意数字

#是代表你设置的第几号种子而已,不会参与运算,是个标记而已

#可以是1,也可以是2



#六边形封箱图:hexbin包中的hexbin()函数

library(hexbin)

with(mydata, {

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

  plot(bin, main="Hexagonal Binning with 10,000 Observations")

})



#气泡图

attach(mtcars) 

r <- sqrt(disp/pi) #用面积表示第三个变量z

symbols(wt, mpg, circle=r, inches=0.30, 

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

        main="Bubble Plot with point size proportional to displacement", 

        ylab="Miles Per Gallon", 

        xlab="Weight of Car (lbs/1000)") 

text(wt, mpg, rownames(mtcars), cex=0.6) 

detach(mtcars)#inches是圆的大小,text()用来添加汽车的名称





#相关系数矩阵

options(digits=2)

cor(mtcars)#计算相关系数



library(corrgram)

corrgram(mtcars, order=TRUE, lower.panel=panel.shade,

         upper.panel=panel.pie, text.panel=panel.txt,

         main="Correlogram of mtcar intercorrelations")

#矩阵行和列都通过主成分分析法进行了重新排序



#马赛克图(有两个以上的类别型变量)嵌套数据

library(vcd) 

mosaic(Titanic, shade=TRUE, legend=TRUE)

#shade=TRUE将根据拟合模型的皮尔逊残差值对图形上色,添加选项legend=TRUE将展示残差的图例

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,这里为您提供一些R语言绘制散点图和折线的代码示例。 首先,我们需要准备一些数据,以便绘制形。在这里,我将使用R中自带的mtcars数据集作为示例数据。 ```r data(mtcars) ``` ## 简单散点图 下面是绘制简单散点图的示例代码: ```r plot(mpg ~ wt, data = mtcars) ``` 这将绘制出mtcars数据集中mpg和wt两个变量之间的散点图。其中,mpg表示汽车的燃油效率,wt表示汽车的重量。 ## 高密度散点图 下面是绘制高密度散点图的示例代码: ```r library(ggplot2) ggplot(mtcars, aes(x = wt, y = mpg)) + geom_density2d() ``` 这将绘制出mtcars数据集中mpg和wt两个变量之间的高密度散点图。其中,ggplot2是一个非常流行的形库,geom_density2d()函数可以帮助我们绘制高密度散点图。 ## 三维散点图 下面是绘制三维散点图的示例代码: ```r library(plotly) plot_ly(mtcars, x = ~wt, y = ~mpg, z = ~cyl, type = "scatter3d", mode = "markers") ``` 这将绘制出mtcars数据集中mpg、wt和cyl三个变量之间的三维散点图。其中,plotly是一个非常流行的交互式形库,可以帮助我们绘制高质量的三维形。 ## 气泡图 下面是绘制气泡图的示例代码: ```r ggplot(mtcars, aes(x = wt, y = mpg, size = cyl)) + geom_point() ``` 这将绘制出mtcars数据集中mpg和wt两个变量之间的气泡图。其中,cyl变量的值用来控制气泡的大小。 ## 折线 下面是绘制折线的示例代码: ```r plot(mtcars$wt, type = "l", col = "blue", ylim = c(0, 7)) lines(mtcars$mpg, type = "l", col = "red") legend("topright", legend = c("wt", "mpg"), col = c("blue", "red"), lty = 1) ``` 这将绘制出mtcars数据集中mpg和wt两个变量之间的折线。其中,wt变量用蓝色表示,mpg变量用红色表示。legend()函数可以帮助我们添加例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮肤小白生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值