R语言绘制三维散点图
之前我们绘制的属于二维散点图,具有两个维度通常是 x 轴和 y 轴)上展示数据点的分布。只能呈现两个变量之间的关系。而三维散点图则具有三个维度(x 轴、y 轴和 z 轴)上展示数据点的分布。可以同时呈现三个变量之间的关系,提供了更丰富的信息和更全面的视角。
从视觉效果来讲二维散点图较为平面和简洁,数据点的分布相对容易观察,但对于复杂的数据关系可能不够直观。三维散点图则更具有立体感,能够更生动地展示数据的分布情况。但由于增加了一个维度,可能会使数据点的分布显得更加复杂,需要一定的时间来适应和理解。
从数据分析能力角度来讲二维散点图适合分析两个变量之间的线性或非线性关系,如相关性、趋势等。可以通过添加趋势线、拟合曲线等方式进一步分析数据。三维散点图除了可以分析三个变量之间的关系外,还可以通过旋转、缩放等操作从不同角度观察数据,发现潜在的模式和异常值。但对于大规模数据集,三维散点图可能会显得拥挤,影响数据分析的效果。
从应用场景来讲二维散点图广泛应用于各种数据分析场景,尤其是当变量数量较少且关系相对简单时。例如,在经济学中分析收入和消费之间的关系,在生物学中分析两种生物指标之间的关系等。三维散点图则适用于需要同时考虑三个变量的情况,如物理学中的空间位置和时间关系、工程学中的多参数优化等。对于一些复杂的数据结构和高维数据的初步探索,三维散点图也可以提供一定的帮助。
0x01 使用scatterplot3d包
一、安装与加载R包
#安装scatterplot3d包
install.packages("scatterplot3d")
#加载scatterplot3d包
library(scatterplot3d)
二、准备数据
#生成三个包含50个随机数的向量x、y 和 z
x <- rnorm(50)
y <- rnorm(50)
z <- rnorm(50)
三、函数用法及参数说明
scatterplot3d(x, y, z,...)
1.
x
:这是必选参数,用于指定散点图中数据点在 x 轴上的坐标。可以是一个数值向量,表示数据点在 x 轴方向的位置。
2.y
:也是必选参数(如果x
是一个包含多个列的矩阵或数据框等复合数据结构时可省略),用于指定散点图中数据点在 y 轴上的坐标。与x
类似,是一个数值向量。
3.z
:必选参数,指定散点图中数据点在 z 轴上的坐标,同样为数值向量。
4.color
:用于指定数据点的颜色。可以是一个颜色向量,每个元素对应一个数据点的颜色;也可以是一个颜色名称字符串,所有数据点将使用该颜色。默认值为par("col")
,即使用当前绘图参数中的颜色设置。
5.col.axis
:用于指定坐标轴的颜色。例如,如果设置col.axis = "red"
,那么坐标轴将显示为红色。默认情况下,如果不指定该参数,坐标轴的颜色通常由当前的绘图设置决定。
6.col.grid
:用于指定三维散点图中网格线的颜色。例如,如果设置col.grid = "blue"
,那么网格线将显示为蓝色。默认情况下,如果不指定该参数,网格线的颜色通常由当前的绘图设置决定。
7.pch
:指定数据点的绘制符号。可以是一个整数值,选择预定义的绘图符号;也可以是一个字符,表示自定义的绘图符号。默认值为par("pch")
,即使用当前绘图参数中的绘图符号设置。
8.main
:设置图形的主标题,为字符串类型。如果不指定,将没有主标题。
9.sub
:副标题,同样为字符串类型。用于在图形下方添加一个副标题。
10.xlim
、ylim
、zlim
:分别用于设置 x 轴、y 轴、z 轴的取值范围。可以是一个包含两个元素的数值向量,分别表示轴的最小值和最大值。如果不指定,函数将根据数据自动确定轴的范围。
11.xlab
、ylab
、zlab
:分别为 x 轴、y 轴、z 轴的标签,用于描述轴所代表的变量含义。都是字符串类型。
12.scale.y
:y 轴相对于 x 轴和 z 轴的缩放比例。默认值为 1,表示 y 轴的缩放比例与 x 轴和 z 轴相同。可以根据需要调整该值来改变 y 轴的显示比例。
13.angle
:x 轴和 y 轴之间的角度。该角度会影响图形的视角,注意结果可能会受到缩放比例的影响。
14.axis
:逻辑值,用于指定是否绘制坐标轴。如果为TRUE
,将绘制坐标轴;如果为FALSE
,则不绘制坐标轴。默认值为TRUE
。
15.tick.marks
:逻辑值,指定是否在坐标轴上绘制刻度线。仅在axis = TRUE
时有效。默认值为TRUE
。
16.label.tick.marks
:逻辑值,指定是否在刻度线上添加标签。仅在axis = TRUE
且tick.marks = TRUE
时有效。默认值为TRUE
。
17.x.ticklabs
、y.ticklabs
、z.ticklabs
:用于指定 x 轴、y 轴、z 轴刻度线的标签向量。可以自定义刻度线的标签,而不是使用默认的数值标签。
18.y.margin.add
:在 y 轴的刻度标签和轴标签之间添加额外的空间。这是一个数值值,用于增加两者之间的间距。
19.y.axis.offset
:指定 y 轴刻度标签与轴的偏移量。默认值为 1,通过调整该值可以改变刻度标签的位置。
20.grid
:逻辑值,用于指定是否在图形中绘制网格线。如果为TRUE
,将绘制网格线;如果为FALSE
,则不绘制。默认值为TRUE
。
21.box
:逻辑值,用于指定是否在图形周围绘制边框。如果为TRUE
,将绘制边框;如果为FALSE
,则不绘制。默认值为TRUE
。
22.highlight.3d
:逻辑值,用于指定是否对数据点进行突出显示。如果为TRUE
,数据点的颜色将根据其在三维空间中的位置而变化,以增强立体感;如果为FALSE
,则使用指定的颜色绘制数据点。默认值为FALSE
。
23.mar
:一个数值向量,用于指定图形的边界大小,顺序为c(bottom, left, top, right)
。可以根据需要调整边界大小,以适应图形的显示。
24.bg
:指定图形的背景颜色。可以是一个颜色名称字符串,也可以是一个颜色值。默认值为par("bg"
),即使用当前绘图参数中的背景颜色设置。
25.type
:用于指定散点图中点的绘制类型。“p“”点;“h”垂线;“s”三维曲面;“l”线。
四、绘制基本的三维散点图
scatterplot3d(x,y,z)
五、美化和调整
scatterplot3d(x,y,z,color = "darkred",pch = 2,col.axis = "darkgrey",col.grid = "lightgrey",main = "三维散点图",scale.y = 2,angle = 30,type = "h")
六、绘制分组三维散点图
# 从 1、2、3 中随机抽取 50 个数字(可重复),并转换为因子类型,作为分类变量 fac
fac <- as.factor(sample(1:3, 50, replace = TRUE))# 将 x、y、z 和 fac 组合成一个数据框 data
data <- data.frame(x,y,z,fac)# 使用 scatterplot3d 函数绘制三维散点图
# data$x、data$y、data$z 分别作为 x、y、z 轴的数据
# color = data$fac 表示根据 fac 这个分类变量来设置数据点的颜色
# pch = 16 指定数据点的绘制符号为实心圆
scatterplot3d(data$x,data$y,data$z,color = data$fac,pch = 16)
0x02 使用rgl包
如果需要绘制可旋转的三维散点图,可使用rgl
包中的plot3d()
函数。
一、安装与加载R包
#安装rgl包
install.packages("rgl")
#加载rgl包
library(rgl)
二、准备数据
x <- runif(100)
y <- runif(100)
z <- runif(100)
三、绘制可旋转的三维散点图
plot3d(x,y,z, col = "blue", size = 5)
相关文章:

R语言绘制三维散点图
之前我们绘制的属于二维散点图,具有两个维度通常是 x 轴和 y 轴)上展示数据点的分布。只能呈现两个变量之间的关系。而三维散点图则具有三个维度(x 轴、y 轴和 z 轴)上展示数据点的分布。可以同时呈现三个变量之间的关系ÿ…...

2014年国赛高教杯数学建模A题嫦娥三号软着陆轨道设计与控制策略解题全过程文档及程序
2014年国赛高教杯数学建模 A题 嫦娥三号软着陆轨道设计与控制策略 嫦娥三号于2013年12月2日1时30分成功发射,12月6日抵达月球轨道。嫦娥三号在着陆准备轨道上的运行质量为2.4t,其安装在下部的主减速发动机能够产生1500N到7500N的可调节推力,…...

QD1-P25 CSS 背景
本节学习:CSS 背景属性 本节视频 https://www.bilibili.com/video/BV1n64y1U7oj?p25 背景颜色 背景图片 不重复 横向重复 纵向重复 双向重复 背景图片大小 400px 600px 原图大小 显示器宽度不够时&…...

《Linux运维总结:基于ARM64+X86_64架构CPU使用docker-compose一键离线部署mongodb 7.0.14容器版分片集群》
总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:《Linux运维篇:Linux系统运维指南》 一、部署背景 由于业务系统的特殊性,我们需要面向不通的客户安装我们的业务系统&…...

Java利用ChromeDriver插件网页截图(Wondows版+Linux版)
chromedriver是谷歌浏览器驱动,用来模拟谷歌运行操作的一个工具,此处主要讲解Java后端利用此插件进行网页截图,并且适配Linux部署。 环境准备 Wondows服务器或电脑 本机需安装Chrome谷歌浏览器,根据本机浏览器版本,下载对应的chr…...

无人机之交互系统篇
一、系统构成 无人机交互系统通常由多个子系统组成,包括但不限于: 多模式人机交互装置:这是人机交互系统的基础层,通常包括计算机、局域网、传感器等设备,用于实现操作员与无人机之间的数据交互和指令传递。例如&…...

MarsCode--找出数字比例超过n/2的【简单】
问题描述 给定一个长度为n的整型数组,已知其中一个数字的出现次数超过数组长度的一半,找出这个元素 输入格式 一个长度为n的数组,其中某个元素的出现次数大于n/2 输出格式 一个整数 输入样例 [1,3,8,2,3,1,3,3,3] 输出样例 3 数据范…...

Python网络爬虫快速入门指南
Python网络爬虫快速入门指南 网络爬虫,也称为网络蜘蛛,是一种自动访问互联网并提取信息的程序。Python因其简洁明了的语法和丰富的库支持,成为开发网络爬虫的理想选择。在这篇博客中,我们将探讨如何快速入门Python网络爬虫技术&a…...

C86 架构一键离线安装 docker 和 docker-compose 实战指南
C86 架构一键离线安装 docker 和 docker-compose 实战指南 文章目录 C86 架构一键离线安装 docker 和 docker-compose 实战指南一 磁盘挂载二 docker 部署1 上传安装包2 解压安装包3 安装包 docker 三 验证安装四 清除安装包五 安装包下载地址 本文提供了在 C86 架构环境下&…...

【LwIP源码学习2】调试输出相关宏
前言 本文对lwip中debug.h文件里的调试相关宏进行分析。 正文 debug.h中有3个重要的调试相关宏: LWIP_ASSERT(message, assertion) LWIP_ERROR(message, expression, handler) LWIP_DEBUGF(debug, message) 断言 LWIP_ASSERT(message, assertion) 源代码为&…...

Python 列表专题:删除元素
Python 是一种强大的编程语言,广泛应用于数据分析、Web 开发、人工智能等多个领域。而列表(List)作为 Python 中最基本的数据结构之一,扮演着非常重要的角色。列表不仅可以存储各种类型的数据,还提供了丰富的操作接口,方便我们进行数据的增删改查。本篇博文将深入探讨 Py…...

Spring Boot 快速入门与核心原理详解
引言 在上一篇文章中,我们详细探讨了 Spring 框架中的事件监听与发布机制。本文将转向 Spring Boot,介绍如何快速入门 Spring Boot,并深入探讨其核心原理。Spring Boot 是由 Pivotal 团队提供的全新框架,旨在简化 Spring 应用的初…...

UniApp 与微信小程序详细对比
UniApp 与微信小程序详细对比 1. 开发环境 微信小程序: 主要使用微信开发者工具提供模拟器、调试工具和性能监控只能开发微信小程序 UniApp: 主要使用 HBuilderX,但也支持 VS Code 等其他编辑器HBuilderX 提供可视化界面、代码提示、调试工…...

【用大模型提示工程处理NLP任务】
Batch API Prompt 工程 任务一:文本分类 任务二:情感分析 任务三:文档处理 任务四:信息抽取 任务五:机器翻译 任务六:生成任务 任务七:文本纠错 Batch API Prompt 工程 Batch API 适用于…...

适配器模式、代理模式(C++)
适配器模式: 定义:适配器模式是一种结构型设计模式,它允许接口不兼容的类一起工作。它通过将一个类的接口转换成客户端期望的另一个接口,使原本由于接口不兼容而不能一起工作的那些类可以一起工作。 代理模式: 定义&a…...

unity 2d 近战攻击判定的三种方式以及精确获取碰撞点
精确获取碰撞点 核心是获取武器碰撞盒最顶点,然后获取敌人碰撞盒距离该点最近的点 /// <summary>/// 获取获取武器前端位置 碰撞盒最左或最右顶点/// </summary>/// <param name"collider"></param>/// <param name"…...

矩形函数的傅里叶变换——从一维到二维,从连续到离散
一维连续矩形函数的傅里叶变换 二维连续矩形函数的傅里叶变换 禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系列教材)》P109 2D DFT 禹晶、肖创柏、廖庆敏《数字图像处理(面向新工科的电工电子信息基础课程系…...

潜水打捞系统助力,破解汽车打捞难题
随着人类活动的不断扩展,汽车落水事故频发,成为救援工作中的一大难题。汽车因其重量和结构特性,一旦沉入水体,打捞工作将面临巨大挑战。传统的打捞方法往往效率低下,且在操作过程中可能会对汽车造成进一步的损害&#…...

【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5
【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5 Note: 草稿状态,持续更新中,如果有感兴趣,欢迎关注。。。 0. 论文信息 article{lecun1998gradient, title{Gradient-based learning applied to document r…...

LeetCode 每日一题 2024/10/7-2024/10/13
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步 目录 10/7 871. 最低加油次数10/8 1436. 旅行终点站10/9 3171. 找到按位或最接近 K 的子数组10/10 3162. 优质数对的总数 I10/11 3164. 优质数对的总数 II10/12 3158. 求出出现两…...

ZYNQ使用XGPIO驱动外设模块(前半部分)
目录 目录 一、新建BD文档,添加ZYNQ处理器 1.BD文档: 2.在Vivado中,BD文件的生成过程通常包括以下步骤: 1)什么是Tcl Console: 3.PL部分是FPGA可编程逻辑部分,它提供了丰富的IO资源,可以用于实现各种硬件接口和功…...

【FastAdmin】全栈视角下的页面跳转实现:从原生html、javascrpt、php技术到jQuery、FastAdmin框架
全栈视角下的页面跳转实现:从原生html、javascrpt、php技术到jQuery、FastAdmin框架 1 引言 页面跳转是Web开发中的基本操作,不同的技术栈提供了不同的实现方法。本文将详细介绍在原生JavaScript、原生HTML、原生PHP、jQuery以及FastAdmin框架中实现页…...

从零开始搭建一个node.js后端服务项目
目录 一、下载node.js及配置环境 二、搭建node.js项目及安装express框架 三、集成nodemon,实现代码热部署 四、Express 应用程序生成器 一、下载node.js及配置环境 网上很多安装教程,此处就不再赘述了 版本信息 C:\Users\XXX>node -v v20.15.0…...

自定义注解和组件扫描在Spring Boot中动态注册Bean(一)
博客主页: 南来_北往 系列专栏:Spring Boot实战 在Spring Boot中,自定义注解和组件扫描是两种强大的机制,它们允许开发者以声明性的方式动态注册Bean。这种方式不仅提高了代码的可读性和可维护性,还使得Spring Boot应用的…...

如何在 IDEA 中导入 Java 项目的 Git 仓库并启动
目录 前言1. 从 Git 仓库导入 Java 项目2. 配置 Maven2.1 配置 Maven 仓库和设置文件2.2 加载依赖 3. 配置 Tomcat 并运行项目3.1 配置 Tomcat3.2 配置 Server URL3.3 启动项目 4. 常见问题与解决方法4.1 Maven 依赖无法下载4.2 Tomcat 部署失败4.3 项目启动后无法访问 结语 前…...

BIO与NIO学习
BIO:同步阻塞IO,客户端一个连接请求(socket)对应一个线程。阻塞体现在: 程序在执行I/O操作时会阻塞当前线程,直到I/O操作完成。在线程空闲的时候也无法释放用于别的服务只能等当前绑定的客户端的消息。 BIO的代码实现 …...

麒麟操作系统:解决umount命令卸载USB存储设备时报“device is busy”错误
麒麟操作系统:解决umount命令卸载USB存储设备时报“device is busy”错误 1、问题描述2、问题解决方法步骤1:尝试强制卸载步骤2:查找占用设备的进程步骤3:终止占用进程步骤4:卸载USB设备 💐The Begin&#…...

Git客户端使用之TortoiseGit和Git
git客户端有两个分别是TortoiseGit和Git Git用于命令行TortoiseGit用于图形界面。无论是Git还是TortoisGit都需要生成公/私钥与github/gitlab建立加密才能使用。 一、先介绍Git的安装与使用 1、下载与安装 安装Git-2.21.0-64-bit.exe(去官网下载最新版64位的),安…...

regionprops函数详解及应用
一、regionprops函数及应用 regionprops 函数在 MATLAB 中是一个强大的工具,用于计算和分析二值图像(或更一般地说,标注矩阵)中连通区域的属性。当处理二值图像时,连通区域通常对应于图像中的前景对象,而背…...

FPAG学习(5)-三种方法实现LED流水灯
目录 1.移位实现LED流水灯 1.1创建工程及源文件代码 1.1.1源代码 1.1.2仿真代码 1.1.3仿真 1.2实验结果 1.2.1总结 2.循环移位实现LED流水灯 3.38译码器实现LED流水灯 3.1原理 3.2源程序 1.移位实现LED流水灯 1.1创建工程及源文件代码 1.1.1源代码 利用计数器计数到…...