高分SCI必备-全方位无死角展示降维数据的三维立体图

简介: 高分SCI必备-全方位无死角展示降维数据的三维立体图

一、概述



《How effective is the health promotion policy in Sichuan, China: based on the PMC-Index model and field evaluation》

640.png

640.png


《Spectrum-effect relationship between UPLC fingerprints and anti-lung cancer effect of Panax ginseng》

640.png


很酷吧,好的图对文章也有加分的作用,接下来我们看看三维图是怎么做的吧?


二、数据集



任何图都离不开数据集,所以先看数据集吧。


2.1 安装及其使用


#相关R包安装与载入:
#install.packages('plotly') 
library(plotly)
#install.packages("Seurat","cols4all")
library(Seurat)
library(cols4all)
#install.packages("ggfun") 在安装tidydr之前需要先安装依赖包ggfun才能安装成功
#install.packages("tidydr","dplyr","ggplot2")
library(tidydr)
library(dplyr)
library(ggplot2)
#install.packages("umap")
library(umap)


2.2 读取数据


首先,我们需要读取obj.Rda数据集,查看数据集信息


data(iris)
str(iris)


数据集展示:


'data.frame':   150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...


三、基础用法



plotly是一个交互式高质量图表绘制R包,如折线图、散点图、面积图、柱形图、箱线图、直方图等等,当然也包括了3D型图表的绘制,如三维散点图、线图、曲面图等。


3.1 三位散点图


data(iris)
# 将iris数据集中的前三列作为三个维度
x <- iris$Sepal.Length
y <- iris$Sepal.Width
z <- iris$Petal.Length
# 将iris数据集中Species列对应到颜色上面,并设置自定义颜色
color <- as.factor(iris$Species)
mycolor <- c("blue", "red", "green")
# 绘制三维散点图
plot_ly(x = x, y = y, z = z, color = color, colors = mycolor, type = "scatter3d", mode = "markers",
        marker=list(size = 2)) %>%
  layout(scene = list(xaxis = list(title = "Sepal Length"),yaxis = list(title = "Sepal Width"),zaxis = list(title = "Petal Length")))
# 将三维散点图保存为交互式HTML文件
saveWidget(plot_ly(x = x, y = y, z = z, color = color, colors = mycolor, type = "scatter3d", mode = "markers",
        marker=list(size = 2)) %>%
  layout(scene = list(xaxis = list(title = "Sepal Length"), yaxis = list(title = "Sepal Width"), zaxis = list(title = "Petal Length"))),
        file = "iris_visualization.html",
        selfcontained = TRUE)

640.png


3.2 三维线图


library(plotly)
# 从 iris 数据集中选择前三个变量,并添加一个类别变量
df <- iris[, 1:3]
df$Species <- as.factor(iris$Species) # 修改列名的首字母为大写
# 绘制一个三维线图
plot_ly(df, x = ~Sepal.Length, y = ~Sepal.Width, z = ~Petal.Length, color = ~Species) %>%
  add_lines() %>%
  layout(scene = list(xaxis = list(title = "Sepal Length"), yaxis = list(title = "Sepal Width"), zaxis = list(title = "Petal Length")))

640.png


3.3 k-means聚类


k-means是一种聚类算法,常用于对数据集进行无监督的聚类分析。该算法将数据集划分为k个不同的类别,如何划分依据的是数据之间的相似性。k-means算法将数据划分为k个簇,簇与簇之间的距离尽可能大,簇内的点与簇中心之间的距离尽可能小。


# 取出数据集中的4个特征列作为聚类的输入
X <- iris[,1:4]
# 设定聚类的类别数量为3
k <- 3
# 使用k均值聚类算法进行聚类
km <- kmeans(X, k)


3.4 plotly包绘图


# 将iris数据集中的Species列由字符型变为数值型,以便与聚类结果进行比较
species <- as.integer(factor(iris$Species)) - 1
# 绘制聚类的结果和原始数据在三维空间中的散点图
plot_ly(x=X$Sepal.Length, y=X$Sepal.Width, z=X$Petal.Length, 
        color=factor(km$cluster), colors=c("red", "blue", "green"),
        symbol=factor(species), symbols=c(0, 1, 2), marker=list(size=3)) %>%
  add_markers() %>%
  add_markers(x=km$centers[,1], y=km$centers[,2], z=km$centers[,3], color=c("red", "blue", "green"), 
              symbol=c(3,3,3), size=10) %>%
  layout(scene = list(xaxis = list(title = "Sepal Length"), 
                      yaxis = list(title = "Sepal Width"), 
                      zaxis = list(title = "Petal Length")))

目录
相关文章
|
机器学习/深度学习 存储 Python
深入剖析SVM核心机制:铰链损失函数的原理与代码实现
铰链损失(Hinge Loss)是支持向量机(SVM)中核心的损失函数,广泛应用于机器学习模型训练。其数学形式为 \( L(y, f(x)) = \max(0, 1 - y \cdot f(x)) \),其中 \( y \) 是真实标签,\( f(x) \) 是预测输出。铰链损失具有凸性、非光滑性和稀疏性等特性,能够最大化分类边际并产生稀疏的支持向量,提高模型泛化能力。它在正确分类、边际内分类和错误分类三种情况下有不同的损失值,适用于线性可分问题且对异常值不敏感。铰链损失通过严格的边际要求和连续梯度信息,提供了高效的优化目标,适合构建鲁棒的分类模型。
1265 77
深入剖析SVM核心机制:铰链损失函数的原理与代码实现
|
12月前
|
数据采集 存储 监控
ETL 工程师必看!3个数据处理阶段及应用场景
本文详解ETL全流程:从需求对齐、数据探查,到提取转换加载,再到质量监控与优化,并结合制造、零售场景展示其应用价值,揭示如何构建高效、可靠的数据生命线。
|
数据安全/隐私保护 Windows
LabVIEW项目中使用库
LabVIEW项目中使用库
528 1
|
Java Android开发 开发者
Android10 修改开发者选项中动画缩放默认值
Android10 修改开发者选项中动画缩放默认值
1026 0
|
Java Scala Maven
Maven 项目模板
Maven的`archetype`用于创建定制项目结构,即项目模板。通过`mvn archetype:generate`命令能快速生成如Java应用的项目。在命令行中执行该命令后,会列出多个远程模板选项供选择。用户可输入数字或应用过滤器,按Enter选择默认(203:maven-archetype-quickstart)来创建简单Java应用程序。
|
机器学习/深度学习 自然语言处理
掩码语言模型(MLM)
掩码语言模型(MLM)
754 1
|
前端开发 JavaScript API
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法
1912 0
|
消息中间件 Linux Android开发
实战高效RPC方案在嵌入式环境中的应用与揭秘
该文介绍了在嵌入式环境中应用和设计高效RPC方案的过程。作者参考了Android的Binder机制,采用共享环形缓冲区来解决进程间同步返回值的问题。选择共享内存是因为其零拷贝、低延迟和灵活访问模式的优势,而环形缓冲区则提供了FIFO特性,便于数据有序传输并优化内存管理。文中提到了关键接口`write`和`read`的实现,以及一个简单的`CalculateSum`接口调用示例,展示了RPC方案的实际效果。该方案旨在提供一种轻量级、高性能的嵌入式RPC通信方法。
577 3

热门文章

最新文章