R语言绘制三维散点图

server/2024/12/22 23:21:53/

之前我们绘制的属于二维散点图,具有两个维度通常是 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)

http://www.ppmy.cn/server/131644.html

相关文章

鹏哥C语言77---指针的定义和类型

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> //---------------------------------------------------BIT - 6 - 指针------------------------------------------------- 1.指针是什么 2.指针和指针类型 3.野指针 4.指针运算 5.指…

精益与数字化的融合:制造业的创新之路

回望过去&#xff0c;精益管理作为制造业的瑰宝&#xff0c;以其“消除浪费、持续改进、顾客至上”的核心理念&#xff0c;引领了无数企业走向成功。从丰田生产方式到全球范围内的广泛实践&#xff0c;精益管理不仅提升了生产效率&#xff0c;更重塑了企业的文化和价值观。它教…

界面控件DevExpress中文教程 - 如何拓展具有AI功能的文本编辑器(二)

NLP是人工智能的一个分支&#xff0c;它允许计算机与人类语言进行交互&#xff0c;这包括以有意义/有用的方式理解、解释、生成和回应文本(和语音)的能力。基于NLP的功能允许更好的数据分析、个性化体验、高效的沟通&#xff0c;并导致更明智的决策和提高效率。例如&#xff1a…

C#使用ITextSharp生成PDF文件实例详解

许多项目开发中需要生成PDF, 常规办法使用官方提供的Microsoft.Office.Interop.Worddll插件,但是这种方法需要完全安装OFFICE,另外版本不一致还会出现很多错误。一般不推荐使用。 下面介绍这种巧妙的用法,定能事半功倍。 本文使用ITextSharp完成功能。 首先,通过NuGet…

C++关于树的基础知识

首先区分概念 “度为m的树”指的是至少有一个结点的度是m&#xff0c;一定是非空树 “m叉树”指的是允许所有的结点都小于m&#xff0c;且可以是空树 常见考点&#xff1a; 度为m的树的第i层最多有个结点 &#xff08;对于m叉树也相同&#xff09; 第一层m的0次方 第二层m的…

JVM进阶调优系列(1)类加载器原理一文讲透

今天开始写JVM调优系列&#xff0c;并发编程系列也会继续穿插连载&#xff0c;让各位同学闲暇之余有更多阅读选择。 起笔写第一篇&#xff0c;并不好写。首先要构思整个系列的大概框架&#xff0c;一个好的框架一定是深度上由浅入深、逻辑上有严格顺序&#xff0c;读者订阅跟踪…

Python酷库之旅-第三方库Pandas(144)

目录 一、用法精讲 651、pandas.Timestamp.min属性 651-1、语法 651-2、参数 651-3、功能 651-4、返回值 651-5、说明 651-6、用法 651-6-1、数据准备 651-6-2、代码示例 651-6-3、结果输出 652、pandas.Timestamp.minute属性 652-1、语法 652-2、参数 652-3、功…

【HarmonyOS开发笔记 1】 -- 开发环境的搭建

DevEco Studio 的下载与安装 下载 下载路径&#xff1a; https://developer.huawei.com/consumer/cn/download/ 安装 解压后双击 deveco-studio-5.0.3.814.exe 指定安装目录&#xff0c;或者默认&#xff0c;然后下一步 一直“下一步”&#xff0c; 直到最后安装完成 新…