当前位置: 首页 > news >正文

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.xlimylimzlim:分别用于设置 x 轴、y 轴、z 轴的取值范围。可以是一个包含两个元素的数值向量,分别表示轴的最小值和最大值。如果不指定,函数将根据数据自动确定轴的范围。
11.xlabylabzlab:分别为 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 = TRUEtick.marks = TRUE时有效。默认值为TRUE
17.x.ticklabsy.ticklabsz.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语言绘制三维散点图

之前我们绘制的属于二维散点图&#xff0c;具有两个维度通常是 x 轴和 y 轴&#xff09;上展示数据点的分布。只能呈现两个变量之间的关系。而三维散点图则具有三个维度&#xff08;x 轴、y 轴和 z 轴&#xff09;上展示数据点的分布。可以同时呈现三个变量之间的关系&#xff…...

2014年国赛高教杯数学建模A题嫦娥三号软着陆轨道设计与控制策略解题全过程文档及程序

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

QD1-P25 CSS 背景

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

《Linux运维总结:基于ARM64+X86_64架构CPU使用docker-compose一键离线部署mongodb 7.0.14容器版分片集群》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;《Linux运维篇&#xff1a;Linux系统运维指南》 一、部署背景 由于业务系统的特殊性&#xff0c;我们需要面向不通的客户安装我们的业务系统&…...

Java利用ChromeDriver插件网页截图(Wondows版+Linux版)

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

无人机之交互系统篇

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

MarsCode--找出数字比例超过n/2的【简单】

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

Python网络爬虫快速入门指南

Python网络爬虫快速入门指南 网络爬虫&#xff0c;也称为网络蜘蛛&#xff0c;是一种自动访问互联网并提取信息的程序。Python因其简洁明了的语法和丰富的库支持&#xff0c;成为开发网络爬虫的理想选择。在这篇博客中&#xff0c;我们将探讨如何快速入门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个重要的调试相关宏&#xff1a; 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 快速入门与核心原理详解

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

UniApp 与微信小程序详细对比

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

【用大模型提示工程处理NLP任务】

Batch API Prompt 工程 任务一&#xff1a;文本分类 任务二&#xff1a;情感分析 任务三&#xff1a;文档处理 任务四&#xff1a;信息抽取 任务五&#xff1a;机器翻译 任务六&#xff1a;生成任务 任务七&#xff1a;文本纠错 Batch API Prompt 工程 Batch API 适用于…...

适配器模式、代理模式(C++)

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

unity 2d 近战攻击判定的三种方式以及精确获取碰撞点

精确获取碰撞点 核心是获取武器碰撞盒最顶点&#xff0c;然后获取敌人碰撞盒距离该点最近的点 /// <summary>/// 获取获取武器前端位置 碰撞盒最左或最右顶点/// </summary>/// <param name"collider"></param>/// <param name"…...

矩形函数的傅里叶变换——从一维到二维,从连续到离散

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

潜水打捞系统助力,破解汽车打捞难题

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

【深度学习】经典的深度学习模型-01 开山之作:CNN卷积神经网络LeNet-5

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

LeetCode 每日一题 2024/10/7-2024/10/13

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

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问&#xff08;基础概念问题&#xff09; 1. 请解释Spring框架的核心容器是什么&#xff1f;它在Spring中起到什么作用&#xff1f; Spring框架的核心容器是IoC容器&#…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...