unity3d 可视化编程_R编程系列:R中的3D可视化

unity3d 可视化编程

In the last blog, we have learned how to create Dynamic Maps Using ggplot2. In this article, we will explore more into the 3D visualization in R programming language by using the plot3d package.

在上一个博客中,我们学习了如何创建 使用ggplot2使用动态地图 。 在本文中,我们将使用plot3d包对R编程语言中的3D可视化进行更多探索

The plot3d package can be used to generate stunning 3-D plots in R. It can generate an interesting array of plots, but in this recipe, we will focus on creating 3-D scatterplots. These arise in situations where we have three variables, and we want to plot the triplets of values on the xyz space.

plot3d包可用于在R中生成令人惊叹的3-D图。它可以生成有趣的图阵列,但是在本食谱中,我们将重点介绍创建3-D散点图。 这些出现在我们有三个变量的情况下,我们想在xyz空间上绘制三元组值。

We will use a specific dataset to plot them into fancy plots using the plot3d package. The following steps are implemented to create 3D visualization in R.

我们将使用plot3d包使用特定的数据集将它们绘制成精美的图。 执行以下步骤以在R中创建3D可视化 。

Step 1: Install the required packages which are needed for 3D visualization in R.

步骤1:在R中安装3D可视化所需的必需软件包。

> install.packages("rgl")
Installing package into ‘C:/Users/admin/Documents/R/win-library/3.6’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.6/rgl_0.100.30.zip'
Content type 'application/zip' length 4253430 bytes (4.1 MB)
downloaded 4.1 MB

package ‘rgl’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
C:\Users\admin\AppData\Local\Temp\Rtmpymt5Jd\downloaded_packages
> install.packages("plot3D")
Installing package into ‘C:/Users/admin/Documents/R/win-library/3.6’
(as ‘lib’ is unspecified)
package ‘plot3D’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
C:\Users\admin\AppData\Local\Temp\Rtmpymt5Jd\downloaded_packages

Include the required libraries in the mentioned workspace.

在上述工作区中包括所需的库。

> library(plot3D)
> library(rgl)

Step 2: We will use the dataset named “income.csv” which includes all the necessary parameters which are needed for understanding income rates of every employee.

步骤2:我们将使用名为“ income.csv ”的数据集,其中包括了解每个员工的收入率所需的所有必要参数。

Image for post

Step 3: Analyze the data structure of the dataset with the mentioned attributes.

步骤3:使用上述属性分析数据集的数据结构。

> str(income)
'data.frame': 30 obs. of 5 variables:
$ names : Factor w/ 30 levels "brady","brandy",..: 27 29 14 17 10 26 22 24 30 18 ...
$ Education: num 21.6 18.3 12.1 17 19.9 ...
$ Seniority: num 113 119 101 188 20 ...
$ Income : num 99.9 92.6 34.7 78.7 68 ...
$ gender : int 1 1 0 0 1 1 1 1 1 1 ...

Step 4: It is important to understand the five-point summary of data before proceeding further. Visualization requires a lookout on bivariate and univariate analysis which is clearly understood with a five-point summary of data.

步骤4:在继续进行之前,了解数据的五点摘要很重要。 可视化需要监视双变量和单变量分析,并通过五点数据摘要清楚地了解。

> summary(income)
names Education Seniority Income
brady : 1 Min. :10.00 Min. : 20.00 Min. :17.61
brandy : 1 1st Qu.:12.48 1st Qu.: 44.83 1st Qu.:36.39
brian : 1 Median :17.03 Median : 94.48 Median :70.80
brittany: 1 Mean :16.39 Mean : 93.86 Mean :62.74
bruce : 1 3rd Qu.:19.93 3rd Qu.:133.28 3rd Qu.:85.93
charles : 1 Max. :21.59 Max. :187.59 Max. :99.92
(Other) :24
gender
Min. :0.0000
1st Qu.:0.0000
Median :1.0000
Mean :0.6333
3rd Qu.:1.0000
Max. :1.0000

Step 5: Let us with bivariate analysis which focusses on 2-dimensional data and scatter plot is considered as an easy method to create the same.

步骤5:让我们进行专注于二维数据的双变量分析,而将散点图视为创建该变量的简便方法。

> scatter3D(x = inc$Education, y = inc$Income, z =inc$Seniority,
+ colvar = inc$Income,
+ pch = 16, cex = 1.5, xlab = "Education", ylab = "Income",
+ zlab = "Seniority", theta = 60, d = 2,clab = c("Income"),
+ colkey = list(length = 0.5, width = 0.5, cex.clab = 0.75,
+ dist = -.08, side.clab = 3)
+ ,main = "Relationship Between Income , Education and Seniority")

Here, we are plotting “Education” in the x-axis, “Income” in the y-axis and the “Seniority” level in the z-axis. The distinct legends are created based on the range of income parameters. The plot is helpful to show the relationship between Income, Education, and Society.

在这里,我们在x轴上绘制“教育”,在y轴上绘制“收入”,在z轴上绘制“高级”水平。 根据收入参数范围创建不同的图例。 该图有助于显示收入,教育和社会之间的关系。

Image for post

We can add more effects to the mentioned 3D plot with plane surfaces and ranges depicted in a specific order. Consider that we want to implement a linear regression model to establish the relationship between Seniority, Education and Income we can create a predictive model for the same.

我们可以使用特定顺序描绘的平面和范围为上述3D图添加更多效果。 考虑到我们要实现线性回归模型以建立资历,教育和收入之间的关系,我们可以为此创建一个预测模型。

Step 6: Create a predictive model with the help of the RGL package. RGL is the 3D real-time rendering package in the R programming language. It provides high-level functions to create an interactive graph. To create a 3D plot of linear regression, we need to create a predictive model of the same.

步骤6:借助RGL软件包创建预测模型。 RGL是R编程语言中的3D实时渲染包。 它提供了高级功能来创建交互式图形。 要创建线性回归的3D图,我们需要创建相同的预测模型。

> lmin = lm(inc$Income~inc$Education+inc$Seniority)
> lmin

Call:
lm(formula = inc$Income ~ inc$Education + inc$Seniority)

Coefficients:
(Intercept) inc$Education inc$Seniority
-50.0856 5.8956 0.1729
> est = coef(lmin)
> a = est["inc$Education"]
> b = est["inc$Seniority"]
> c=-1
> d= est["(Intercept)"]
> est
(Intercept) inc$Education inc$Seniority
-50.0856387 5.8955560 0.1728555
> a
inc$Education
5.895556
> b
inc$Seniority
0.1728555
> c
[1] -1
> d
(Intercept)
-50.08564

Step 7: Once the required parameters for linear regression are taken into consideration, we can create an interactive graph where we plot the data points as a scattered graph and later embed the linear regression model in them.

步骤7:一旦考虑了线性回归所需的参数,我们就可以创建一个交互式图形,在其中将数据点绘制为散点图,然后将线性回归模型嵌入其中。

> plot3d(inc$Education,inc$Seniority,inc$Income, type = "s",
+ col = "blue", xlab = "Education",ylab = "Income",zlab =
+ "Seniority",box = FALSE)
Image for post

Now we will embed the linear regression line as mentioned below:

现在,我们将嵌入线性回归线,如下所示:

planes3d(a,b,c,d, alpha = 0.5, col = "red")
Image for post

Step 8: We can create a surface plot that defines the volume and intensity of the data. Following steps are implemented to create a specific plot as mentioned below:

步骤8:我们可以创建一个表面图来定义数据的数量和强度。 执行以下步骤来创建特定图,如下所述:

> inc= read.csv("income2.csv")
> View(inc)
> row.names(inc)= inc$names
> inc
names Education Seniority Income gender
tim tim 21.58621 113.10345 99.91717 1
tom tom 18.27586 119.31034 92.57913 1
kim kim 12.06897 100.68966 34.67873 0
mary mary 17.03448 187.58621 78.70281 0
hary hary 19.93103 20.00000 68.00992 1
thomas thomas 18.27586 26.20690 71.50449 1
peter peter 19.93103 150.34483 87.97047 1
romeo romeo 21.17241 82.06897 79.81103 1
wald wald 20.34483 88.27586 90.00633 1
matt matt 10.00000 113.10345 45.65553 1
pam pam 13.72414 51.03448 31.91381 0
pamela pamela 18.68966 144.13793 96.28300 0
larry larry 11.65517 20.00000 27.98250 1
karl karl 16.62069 94.48276 66.60179 1
brian brian 10.00000 187.58621 41.53199 1
dan dan 20.34483 94.48276 89.00070 1
sim sim 14.13793 20.00000 28.81630 0
kristin kristin 16.62069 44.82759 57.68169 0
chiu chiu 16.62069 175.17241 70.10510 1
bruce bruce 20.34483 187.58621 98.83401 1
brady brady 18.27586 100.68966 74.70470 1
brandy brandy 14.55172 137.93103 53.53211 0
charles charles 17.44828 94.48276 72.07892 1
timothy timothy 10.41379 32.41379 18.57067 0
jerry jerry 21.58621 20.00000 78.80578 1
garry garry 11.24138 44.82759 21.38856 1
jena jena 19.93103 168.96552 90.81404 0
ram ram 11.65517 57.24138 22.63616 1
brittany brittany 12.06897 32.41379 17.61359 0
milly milly 17.03448 106.89655 74.61096 0

Here, we convert the dataset into a separate vector and we also created the index based on the names of candidates. Text3d is the function that adds text to the plane surface. The text represents actual data representation. As we converted the row names with names of candidates, it becomes easy to display text in the 3D plot.

在这里,我们将数据集转换为单独的向量,并且还基于候选名称创建了索引。 Text3d是将文本添加到平面的功能。 文本表示实际数据表示。 当我们用候选名称转换行名称时,在3D图中显示文本变得很容易。

> text3D(x = inc$Education, y = inc$Income, z =inc$Seniority,
+ colvar = inc$Income,labels= row.names(inc),
+ pch = 16, cex = 0.8, xlab = "Education", ylab = "Income",
+ zlab = "Seniority", theta = 60, d = 2,clab = c("Income"),
+ colkey = list(length = 0.5, width = 0.5, cex.clab = 0.75,
+ dist = -.08, side.clab = 3)
+ ,bty = "g")
Image for post

Step 9: We can convert the values in proper labels with distinct colors. This helps to visualize the 3D plot more easily and distinctly with a specific color range.

步骤9:我们可以将值转换为具有不同颜色的适当标签。 这有助于在特定颜色范围内更轻松,更清晰地可视化3D图。

> text3D(x = inc$Education, y = inc$Income, z =inc$Seniority,
+ colvar= inc$gender,col = c("red","black"),labels= row.names(inc),
+ pch = 16, cex = 0.8,xlab = "Education", ylab = "Income",
+ zlab = "Seniority", theta = 60, d = 2,clab = c("Income"),
+ bty = "g", colkey = FALSE)
> legend("topright", fill = c("red", "black"), legend=
+ c("Female","Male"), bty = "n")

等高线图 (Contour Plots)

Contour plots visually represent the intensity of the plot. The color and graphical representation help in the visual analysis of data.

等高线图直观地表示了该图的强度。 颜色和图形表示有助于数据的可视化分析。

> x = y = seq(-3,3, length.out = 10)
> x
[1] -3.0000000 -2.3333333 -1.6666667 -1.0000000 -0.3333333 0.3333333
[7] 1.0000000 1.6666667 2.3333333 3.0000000
> y
[1] -3.0000000 -2.3333333 -1.6666667 -1.0000000 -0.3333333 0.3333333
[7] 1.0000000 1.6666667 2.3333333 3.0000000
> f = function(x,y){ z= (y^2-x^2)}
> m = outer(x,y,f)
>
> image2D(m)
> image2D(m, contour = TRUE)
>
> persp3D(z = m, contour = TRUE)
> persp3D(z = volcano, contour = TRUE)
>
> library(rgl)
> c = terrain.colors(5)
> persp3d(z = volcano, contour = TRUE, col = c)

The output of the contour plot is mentioned below:

等高线图的输出如下所述:

Image for post

The interactive 3d plot is mentioned below:

交互式3d图如下所示:

Image for post

We can also create a plot with an animation feature which increases the interactive rate. For this, it is important to install an “animation” package which helps in creating the plots as desired.

我们还可以创建带有动画功能的绘图,以提高交互速率。 为此,重要的是安装一个“动画”程序包,该程序包可以帮助创建所需的绘图。

> install.packages("plotrix")
Installing package into ‘C:/Users/admin/Documents/R/win-library/3.6’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.6/plotrix_3.7-7.zip'
Content type 'application/zip' length 1132324 bytes (1.1 MB)
downloaded 1.1 MB

package ‘plotrix’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
C:\Users\admin\AppData\Local\Temp\RtmpSCUS7b\downloaded_packages
>
> install.packages("animation")
Installing package into ‘C:/Users/admin/Documents/R/win-library/3.6’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.6/animation_2.6.zip'
Content type 'application/zip' length 548202 bytes (535 KB)
downloaded 535 KB

package ‘animation’ successfully unpacked and MD5 sums checked

The downloaded binary packages are in
C:\Users\admin\AppData\Local\Temp\RtmpSCUS7b\downloaded_packages
>
> library(plot3D)
> library(plotrix)

Attaching package: ‘plotrix’

The following object is masked from ‘package:rgl’:

mtext3d

> library(animation)
>
> x = y = seq(0,2*pi, length.out = 100)
>
> z = mesh(x,y)
> u = z$x
> v = z$y
>
> m= (sin(u)*sin(2*v)/2)
> n = (sin(2*u)*cos(v)*cos(v))
> o = (cos(2*u)*cos(v)*cos(v))
>
> surf3D(m, n,o, colvar = o, border = "black",colkey = FALSE,box = TRUE)
>
> surf3D(m, n,o, colvar = o, border = "black",colkey = TRUE, box = TRUE,theta = 60)
>
> surf3D(m, n,o, colvar = o, border = "black",colkey = TRUE,box = TRUE,theta = 100)
>
> library("animation")
> saveHTML({
+ for (i in 1:100 ){
+ x = y = seq(0,2*pi, length.out = 100)
+ z = mesh(x,y)
+ u = z$x
+ v = z$y
+ m= (sin(u)*sin(2*v)/2)
+ n = (sin(2*u)*cos(v)*cos(v))
+ o = (cos(2*u)*cos(v)*cos(v))
+ surf3D(m, n,o, colvar = o, border = "black",colkey = FALSE,
+ theta = i, box = TRUE)
+ }
+ },interval = 0.1, ani.width = 500, ani.height = 1000)

The ranges of the graphs are depicted below:

图的范围如下所示:

Image for post
Image for post

The file is saved with .html extension and represents the graphical animation of the values in three co-ordinates.

该文件以.html扩展名保存,并以三个坐标表示值的图形动画。

So, this was all about 3D visualization in R programming!

因此,这一切都与R编程中的3D可视化有关!

In the next section, we will be going to learn about Data Wrangling and Visualization in R programming language.

在下一节中,我们将学习R编程语言中的数据整理和可视化

Originally published https://blog.eduonix.com on March 27, 2020

最初 2020 3月27日发布 https://blog.eduonix.com

翻译自: https://medium.com/eduonix/r-programming-series-3d-visualization-in-r-3f9280d7ddb4

unity3d 可视化编程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388572.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详谈P(查准率),R(查全率),F1值

怎么来的? 我们平时用的精度accuracy,也就是整体的正确率 acc predict_right_num / predict_num 这个虽然常用,但不能满足所有任务的需求。比如,因为香蕉太多了,也不能拨开人工的一个一个的看它的好坏(我爱吃啊&#…

网站系统分布式架构

写这篇文章之前,需要有些论点和论据,以表明网络系统在极端情况下的情况,先来看看世界上排名靠前的网站。 1、 FaceBook 2、 Google 从这两个站可以看出,当下比较极限的日均访问量在2~3亿,PV值…

python 数据科学 包_什么时候应该使用哪个Python数据科学软件包?

python 数据科学 包Python is the most popular language for data science. Unfortunately, it can be tricky to know which of the many data science libraries to use when. ☹️Python是数据科学中最流行的语言。 不幸的是,要知道何时使用许多数据科学库中的哪…

Go语言开发环境配置

http://blog.csdn.net/hil2000/article/details/41261267/ 一.我为什么要学习go语言 当今已经是移动和云计算时代,Go出现在了工业向云计算转型的时刻,简单、高效、内 置并发原语和现代的标准库让Go语言尤其适合云端软件开发(毕竟它就是为此而…

熊猫tv新功能介绍_您应该知道的4种熊猫绘图功能

熊猫tv新功能介绍Pandas is a powerful package for data scientists. There are many reasons we use Pandas, e.g. Data wrangling, Data cleaning, and Data manipulation. Although, there is a method that rarely talks about regarding Pandas package and that is the …

win与linux渊源,微软与Linux从对立走向合作,WSL是如何诞生的

原标题:微软与Linux从对立走向合作,WSL是如何诞生的正文Windows Subsystem for Linux(WSL)的开发,让微软从Linux的对立面走向合作,并且不断加大对开源社区的支持力度。而作为微软历史上的重要转折点,外界对WSL技术在Pr…

MFC80.DLL复制到程序目录中,也有的说复制到安装目录中

在用VS2005学习C调试程序的时候,按F5键,总提示这个问题, 不晓得什么原因,网上有的说找到MFC80.DLL复制到程序目录中,也有的说复制到安装目录中,可结果很失望,也有的VS2005安装有问题&#xff0…

vs显示堆栈数据分析_什么是“数据分析堆栈”?

vs显示堆栈数据分析A poor craftsman blames his tools. But if all you have is a hammer, everything looks like a nail.一个可怜的工匠责怪他的工具。 但是,如果您只有一把锤子,那么一切看起来都像钉子。 It’s common for web developers or databa…

树莓派 zero linux,树莓派 zero基本调试

回家之前就从网上购买了一堆设备,回去也不能闲着,可以利用家里相对齐全的准备安装调试。结果人还没回来,东西先到了。购买的核心装备是树莓派zero w,虽然已经知道它比家族大哥树莓派小不少,但拿到手里还是惊奇它的小巧…

简单的编译流程

简易编译器流程图: 一个典型的编译器,可以包含为一个前端,一个后端。前端接收源程序产生一个中间表示,后端接收中间表示继续生成一个目标程序。所以,前端处理的是跟源语言有关的属性,后端处理跟目标机器有关的属性。 复…

广告投手_测量投手隐藏自己的音高的程度

广告投手As the baseball community has recently seen with the Astros 2017 cheating scandal, knowing what pitch is being thrown gives batters a game-breaking advantage. However, unless you have an intricate system of cameras and trash cans set up, knowing wh…

验证部分表单是否重复

1. 效果 图片中的名称、机构编码需要进行重复验证2. 思路及实现 表单验证在获取数据将需要验证的表单数据进行保存this.nameChangeTemp response.data.orgName;this.codeChangeTemp response.data.orgCode; 通过rule对表单进行验证 以名字的验证为例rules: {orgName: [// 设置…

python bokeh_提升视觉效果:使用Python和Bokeh制作交互式地图

python bokehLet’s face it, fellow data scientists: our clients LOVE dashboards. Why wouldn’t they? Visualizing our data helps us tell a story. Visualization turns thousands of rows of data into a compelling and beautiful narrative. In fact, dashboard vi…

用C#写 四舍五入函数(原理版)

doubled 0.06576523;inti (int)(d/0.01);//0.01决定了精度 doubledd (double)i/100;//还原 if(d-dd>0.005)dd0.01;//四舍五入 MessageBox.Show((dd*100).ToString()"%");//7%,dd*100就变成百分的前面那一部分了

浪里个浪 FZU - 2261

TonyY是一个喜欢到处浪的男人,他的梦想是带着兰兰姐姐浪遍天朝的各个角落,不过在此之前,他需要做好规划。 现在他的手上有一份天朝地图,上面有n个城市,m条交通路径,每条交通路径都是单行道。他已经预先规划…

C#设计模式(9)——装饰者模式(Decorator Pattern)

一、引言 在软件开发中,我们经常想要对一类对象添加不同的功能,例如要给手机添加贴膜,手机挂件,手机外壳等,如果此时利用继承来实现的话,就需要定义无数的类,如StickerPhone(贴膜是手…

nosql_探索NoSQL系列

nosql数据科学 (Data Science) Knowledge on NoSQL databases seems to be an increasing requirement in data science applications, yet, the taxonomy is so diverse and problem-centered that it can be a challenge to grasp them. This post attempts to shed light on…

C++TCP和UDP属于传输层协议

TCP和UDP属于传输层协议。其中TCP提供IP环境下的数据可靠传输,它事先为要发送的数据开辟好连接通道(三次握手),然后再进行数据发送;而UDP则不为IP提供可靠性,一般用于实时的视频流传输,像rtp、r…

程序员如何利用空闲时间挣零花钱

一: 私活 作为一名程序员,在上班之余,我们有大把的时间,不能浪费,这些时间其实都是可以用来挖掘自己潜在的创造力,今天要讨论的话题就是,程序员如何利用空余时间挣零花钱?比如说周末…

python中api_通过Python中的API查找相关的工作技能

python中api工作技能世界 (The World of Job Skills) So you want to figure out where your skills fit into today’s job market. Maybe you’re just curious to see a comprehensive constellation of job skills, clean and standardized. Or you need a taxonomy of ski…