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

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

散点图用于描述两个连续性变量间的关系,三个变量之间的关系可以通过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:比例因子,控制气泡的大小(默认最大圆圈为1 inch)

参考文档:

scatterplotMatrix

R语言—散点图 一.绘制基本散点图如何绘制散点图方法 1)使用plot函数可绘制散点图,运行命令时依次传递给plot()函数一个向量x和一个向量y 2)使用ggplot函数,运行geom_point()函数,分别映射一个变量到x和y          heightweight是个多列数据集ps:通过设定点形参数可以在散点图绘制默认值以外的点形(系统默认为为2),如:二.使用点形和颜色属性,并基于某变量对数据进行... 阅读详情

相关推荐

R语言绘制散点图

今天小编来分享一下R语言绘制散点图的代码。 1.小编使用的是R自带的数据集,先调用出数据集; #调用R自带数据集 library(gcookbook) head(heightweight) 2.绘制型变量的散点图; ##映射离型型变量 ##基于颜色和点形对数据进行分组可指定colour或者shape两种参数,分别将不同分组以不同颜色/点形表述 # 基函数:colour设置分组 library(ggplot2) ggplot(heightweight, aes(x = ageYear, y = he

weifanbio的博客 3万+

使用gghighlight包突出散点图中的特定数据点并添加文本标签(R语言)

在本文中,我们介绍了如何使用gghighlight包在R语言中突出显示散点图中的特定数据点并添加文本标签。gghighlight包是一个基于ggplot2的扩展包,它提供了一种简单的方法来突出显示散点图中的特定数据点。通过使用gghighlight,我们可以选择性地突出显示符合特定条件的数据点,并为这些点添加自定义的文本标签。在R语言中,我们可以使用gghighlight包来实现这一目标。运行上述代码后,我们将在散点图中看到马力大于200的数据点被突出显示为红色,并且每个数据点上都有相应的标签。

TechCraze的博客 550

R语言ggplot2包绘制散点图详解

List item R语言的ggplot包可以实现各种复杂的制图功能,本文以散点图为例,介绍ggplot2代码的使用方法。 首先,使用R内置数据attitude绘制complaints和learning的散点图。请注意ggplot2语法和R原生代码的区别。ggplot2采用图层模式,不同图层用“+”叠加。 > head(attitude,3) rating complaints p...

Programming Talk 1万+

如何在 R 中标记散点图上的点(附示例)

本教程提供了一个示例,说明如何在基础 R 和 ggplot2 中标记散点图上的点。示例 1:在基础 R 中标注散点图点 要将标签添加到基础 R 中的散点图点,您可以使用text()函数,该函数使用以下语法:以下代码显示了如何在基础 R 中标记散点图上的单个点: 示例 2:标记 ggplot2 中的散点图点 以下代码显示了如何在 ggplot2 中标记散点图上的单个点: 以下代码显示了如何在 ggplot2 中标记散点图上的每个点:...

Mrrunsen的博客 3332

R可视化散点图并进行特殊目标样本点的标记

R可视化散点图并进行特殊目标样本点的标记 目录 R可视化散点图并进行特殊目标样本点的标记 为一个数据点添加标记信息 为所有数据点添加标记信息 ggplot2为一个数据点添加标记信息 ggplot2为所有数据点添加标记信息 如何在原生R和GGPLOT2可视化散点图中进行特殊目标样本点的标记。 为R散点图的点添加标签或者标记,可以使用text()函数,该函数使用以下语法: text(x, y, labels, …) x:标签的x坐标 y:标签的y坐标 labels:用于标识.

data+scenario+science+insight 1658

R语言----制作散点图添加拟合线

本此练习使用的是R语言自带数据集cars~ library(ggplot2) ggplot(cars,aes(speed,dist))+ #使用geom_point()函数绘制散点图,其中alpha为设置透明度 geom_point(size=4,color="steelblue2",alpha=0.5)+ #使用geom_smooth()函数绘制拟合线,其中lm为线性拟合,se设置为FALSE取消置信区间 geom_smooth(color="steelblue2",method="lm"

sqyao_147的博客 1万+

R绘制散点图

R绘制散点图 基本散点图 直接使用R基础包的绘图函数plot(): plot(mtcars$wt, mtcars$mpg) 或使用ggplot2中的qplot()函数: library(ggplot2) qplot(mtcars$wt, mtcars$mpg) 如果绘图所用的两个参数向量包含在同一个数据框内,则可以运行下面的命令: library(ggplot2) qplot(wt,mpg,data=mtcars) # 或者 ggplot(mtcars, aes(x=wt, y=mpg)) +

github_62245663的博客 9260

R语言绘图-散点图

R语言绘图-散点图散点图是展示两个或多个数值型变量相关性特征的常用工具,通常包括简单散点图、三维散点图、矩阵散点图等。简单散点图简单散点图是将观测数据绘制在一个二维平面中,以此观察数值型变量之间的相关性。我们以R中ggplot2包中的mtcars数据集来讲述一下R如何绘制简单散点图,并对散点图进行修饰。

guomj_cdc的博客 7万+

【R语言入门】从R、RStudio安装到 条形图、折线图、散点图 等的图形绘制

目录一、【R语言入门】——安装R和Rstuido软件1、R安装包1.1、直接下载博主我的安装包资源(亲测安全有效)1.2、官网下载R安装包2、安装R3.R的32位与64位的区别!提问:答:推荐:4、下载RStudio安装包4.1、直接下载博主我的安装包资源(亲测安全有效)4.2、官网下载5、安装RStudio6、R语言环境安装二、【R语言入门】——R语言绘图2.1.R语言绘制频率直方图1.基础做图hist函数1.1 多图展示2.ggplot2绘制2.1 修改柱子之间的距离2.2 添加拟合曲线2.3 修改线条

胡毛毛的博客 2万+

R语言笔记十二:绘图函数

1.R语言四大作图系统 基础绘图系统(graphics包,默认已加载) lattice包 ggplot2包 grid包 demo(graphics):可以对graphics包中的绘图函数绘制demo图。 help(package=“graphics”):对graphics包中的函数进行详细介绍。 2.R基础绘图系统 1)高级绘图 高级绘图是一步到位,可以直接绘制出图; 2)低级绘图 低级绘图不能单独使用,必须在高级绘图产生图形的基础上,对图形进行调整,比如加一条线,加上标题文字等。 3.R绘图输入数据

weixin_44384631的博客 3694

R 绘图 - 散点图

本文介绍了在R语言中绘制散点图的方法,重点针对VSCode环境下的中文支持。主要内容包括:1)R散点图简介及适用场景;2)环境准备,包括安装R、ggplot2、httpgd等必要包;3)中文显示解决方案,推荐使用showtext包或配置中文字体;4)两种绘图方式详解:基础plot()函数和高级ggplot2包的使用方法,均提供完整代码示例;5)散点图增强技巧,如添加回归线、按类别着色等。文章配有详细注释和可视化参考,适合R语言初学者快速掌握散点图绘制技巧,特别是在中文环境下的实现方法。

m0_57545130的博客 1080

R绘图笔记 | 一般的散点图绘制

可先阅读文章:R绘图笔记 | R语言绘图系统与常见绘图函数及参数1.利用plot()绘制散点图R语言中plot()函数的基本格式如下:plot(x,y,...) plot函数中,x和y分...

BioInfoNotes 3366

R语言中级绘图:三维散点图

本章,我们主要关注用于展示双变量间关系和多变量间关系的绘图方法 三维散点图 使用函数scatterplot3d()绘制三维散点图 示例 install.packages("scatterplot3d") library(scatterplot3d) attach(mtcars) scatterplot3d(wt,disp,mpg,main="Basic 3D Scatter Plot") sc...

weixin_42712867的博客 1万+

R极简教程-11:高级绘图函数

上一篇里我大概写了R语言的简单作图元素,这里我们开始使用一些稍微高级绘图函数,这些函数主要用来做各种统计图,比如箱线图,条形图,散点图等等……这些图再几百年前就开始使用,至今依然是学术界最为流行的图。

Joshua_HIT的博客 5489

Matlab绘图进阶第7弹】Matlab绘制二维散点图

Matlab绘制二维散点图!!!

m0_65119637的博客 1万+

R可视乎|三维散点图

简介 上期我们说了气泡图。如果我们将气泡图的三维数据绘制到三维坐标系中,通常称其为三维散点图,即用在三维X-Y-Z图上针对一个或多个数据序列绘出三个度量的一种图表。 有关散点图前几部分系列可见(可跳转): 趋势显示的二维散点图 分布显示的二维散点图 气泡图 R 中scatterplot3d包的scatterplot3d()函数、rgl包的plot3d()函数、plot3D包的scatter3D()函数等都可以绘制三维散点图。 下面将从两个包的两个函数(scatter3D(),plot3d()

qq_37379316的博客 5293

R语言绘制三维散点图

之前我们绘制的属于二维散点图,具有两个维度通常是 x 轴和 y 轴)上展示数据点的分布。只能呈现两个变量之间的关系。而三维散点图则具有三个维度(x 轴、y 轴和 z 轴)上展示数据点的分布。可以同时呈现三个变量之间的关系,提供了更丰富的信息和更全面的视角。

zegeai的博客 1689

R语言ggplot2 | 如何绘制美观的散点图

利用ggplot2包及相关包描绘美观且有用的散点图散点图是一种常用的图形,可以直观展示回归分析中数据的分布和聚合情况(因变量随自变量而变化的大致趋势,进而找到变量之间的合适函数关系)。我们经常看到用散点图表示线性回归关系,进行预测分析,进而做出科学的决策。变量之间的关系有很多,如线性关系、指数关系、对数关系等等,当然,没有关系也是一种重要的关系。

R酷的数据科学笔记 5436
上一篇: Scipy 学习 第2篇:计算距离
下一篇: 数据挖掘 第四篇:OLS回归分析
悦光阴
博客等级 码龄6年 180粉丝 563原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

悦光阴

你的鼓励是我创作的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值