R 软件和数据可视化 - 使用scatter3d函数绘制交互式 3D 散点图

本文详细介绍了如何在R语言中使用scatter3d函数绘制交互式3D散点图,包括基本图、按组绘制、改变颜色、调整轴属性、添加文本标签及导出图像等步骤,并提供了丰富的示例代码。通过实例展示了如何利用rgl和car包对鸢尾花数据集进行3D可视化分析。
摘要由CSDN通过智能技术生成


前言

这篇教程主要在于如何介绍使用R 软件和包car中的函数scatter3d执行交互式 3d 图形。由于国内关于使用scatter3d函数的教程较少,加上rstudio中的帮助关于scatter3d函数参数的介绍繁琐且复杂,所以特此整理总结。
Rstudio中的帮助对于scatter3d函数的介绍
在这里插入图片描述


一、安装和加载所需的包

本教程需要rgl和car包:

install.packages(c("rgl", "car"))

加载包:

library("car")

二、准备数据

我们将在以下示例中使用iris数据集:

data(iris)
head(iris)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
sep.l <- iris$Sepal.Length
sep.w <- iris$Sepal.Width
pet.l <- iris$Petal.Length

鸢尾花数据集分别给出了来自 3 种鸢尾花的 50 朵花的变量萼片长度和宽度、花瓣长度和宽度的测量值。该物种是鸢尾花、杂色鸢尾和维吉尼亚鸢尾。

三、函数 scatter3d

简化的格式是:

scatter3d(formula, data)
scatter3d(x, y, z)

x, y, z分别是要绘制的点的坐标。参数y和z可以是可选的,具体取决于x的结构。
formula:形式为y ~ x + z的模型公式。如果要按组绘制点,可以使用y ~ x + z | g其中g是将数据分组的因子
data : 计算公式的数据框


四、基本3D散点图

library(car)
# 3D plot with the regression plane
scatter3d(x = sep.l, y = pet.l, z = sep.w)

在这里插入图片描述
请注意,可以通过按住鼠标或触摸板手动旋转绘图。也可以使用鼠标上的滚轮或使用 PC 上的触摸板或 Mac 上的两个手指(向上或向下)按 ctrl + 进行缩放。

更改点颜色并移除回归曲面:

scatter3d(x = sep.l, y = pet.l, z = sep.w,
        point.col = "blue", surface=FALSE)

在这里插入图片描述

五、按组绘制点

默认图

scatter3d(x = sep.l, y = pet.l, z = sep.w, groups = iris$Species)

在这里插入图片描述

去除表面

要仅删除网格,可以使用参数grid = FALSE,如下所示:

scatter3d(x = sep.l, y = pet.l, z = sep.w, groups = iris$Species,
          grid = FALSE)

在这里插入图片描述
请注意,可以使用参数fit更改表面的显示。fit的可能值是**“linear”、“quadratic”、“smooth”“additive”**

scatter3d(x = sep.l, y = pet.l, z = sep.w, groups = iris$Species,
          grid = FALSE, fit = "smooth")

在这里插入图片描述
去除表面。使用参数suface = FALSE。

scatter3d(x = sep.l, y = pet.l, z = sep.w, groups = iris$Species,
          grid = FALSE, surface = FALSE)

在这里插入图片描述

添加浓度椭球

scatter3d(x = sep.l, y = pet.l, z = sep.w, groups = iris$Species,
          surface=FALSE, ellipsoid = TRUE)

在这里插入图片描述

从椭球中删除网格:

scatter3d(x = sep.l, y = pet.l, z = sep.w, groups = iris$Species,
          surface=FALSE, grid = FALSE, ellipsoid = TRUE)

在这里插入图片描述

按组更改点颜色

使用了参数surface.colsurface.col是回归平面的颜色向量。

对于多组图,颜色用于回归曲面和多组中的点。

scatter3d(x = sep.l, y = pet.l, z = sep.w, groups = iris$Species,
          surface=FALSE, grid = FALSE, ellipsoid = TRUE,
          surface.col = c("#999999", "#E69F00", "#56B4E9"))

在这里插入图片描述
也可以使用RColorBrewer包中的调色板:

library("RColorBrewer")
colors <- brewer.pal(n=3, name="Dark2")
scatter3d(x = sep.l, y = pet.l, z = sep.w, groups = iris$Species,
          surface=FALSE, grid = FALSE, ellipsoid = TRUE,
          surface.col = colors)

在这里插入图片描述

六、轴

更改轴标签

使用了参数xlab、ylabzlab

scatter3d(x = sep.l, y = pet.l, z = sep.w,
        point.col = "blue", surface=FALSE,
        xlab = "Sepal Length (cm)", ylab = "Petal Length (cm)",
        zlab = "Sepal Width (cm)")

在这里插入图片描述

删除轴刻度

axis.scales = FALSE

scatter3d(x = sep.l, y = pet.l, z = sep.w,
        point.col = "blue", surface=FALSE, 
        axis.scales = FALSE)

在这里插入图片描述

更改轴颜色

默认情况下,3 个轴使用不同的颜色。参数axis.col用于指定 3 个轴的颜色:

scatter3d(x = sep.l, y = pet.l, z = sep.w, groups = iris$Species,
          surface=FALSE, grid = FALSE, ellipsoid = TRUE,
          axis.col = c("black", "black", "black"))

在这里插入图片描述

七、为点添加文本标签

使用以下参数:

labels:点的文本标签,每个点一个
id.n : 自动识别的相对极值点的数量

scatter3d(x = sep.l, y = pet.l, z = sep.w, 
          surface=FALSE, labels = rownames(iris), id.n=nrow(iris))

在这里插入图片描述

八、导出图像

绘图可以保存为 png 或 pdf。

函数**rgl.snapshot()**用于将屏幕截图保存为 png 文件:

rgl.snapshot(filename = "plot.png")

函数**rgl.postscript()**用于将屏幕截图保存为ps、eps、tex、pdf、svg 或 pgf格式的文件:

rgl.postscript("plot.pdf",fmt="pdf")
scatter3DR语言中用来绘制3D散点图函数。它可以通过调用plotly包来创建交互式的、可视化丰富的图表。首先,你需要准备绘图所需的数据,并将其保存为.csv格式的文件。然后使用read.csv函数将数据读入R中。接下来,调用plot_ly函数,并指定x、y、z轴的数据。可以通过color参数设置数据点的颜色,通过colors参数指定相应的颜色。最后,使用add_markers函数将数据点添加到图表中。可以使用marker参数调整数据点的大小。 需要注意的是,在绘制3D散点图时,可以调整数据点的大小和透明度来增加图表的可视效果。此外,还要注意避免数据下陷的问题。在echarts中,为了解决数据下陷的问题,可以添加一个最小值,并且设置该数据不显示出来。这样就可以解决数据下陷的问题。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [R语言作图——3D scatter(3D散点图)](https://blog.csdn.net/biocity/article/details/119512191)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [echarts3d地图散点数据陷进地图的多次试验后终于成功](https://download.csdn.net/download/longbin891012/85624777)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值