R语言使用Plotly包进进行可交互性绘图---3D表面图(3D
简介
Plotly是一个基于JavaScript技术的一项开源项目,官网用一句话介绍了这组工具的功能:The open source JavaScript graphing library that powers plotly——一项利用JavaScript技术的开源增强型绘图工具库。并且其开发了多种平台的API接口,包括Python,MATLAB,Excel,Ruby以及我这里用到的R平台等等。提供的图像类型十分丰富,并且安装配置起来也十分方便。
而我自己本人也是由于最近的一项项目的分析结果想要找到一个比较好的可视化表现效果,google了一些相关的资料之后,才发现了这么一个十分好用的工具,使用之后发现效果不错,在这里分享一下使用方法与相关代码。
在R环境下,直接在CRAN里安装即可。
install.packages('plotly')
library(plotly)
packageVersion('plotly')#输入可查看包的版本
1.绘制一个基本的3D表面图
调用R自带的一组火山数据
代表的是某座火山在不同坐标位置的海拔高度data('volcano')
View(volcano)#查看数据情况
这组数据是一组矩阵,直接运行:
p1=plot_ly(z=~volcano)%>%add_surface()
p1
在Rstudio就可以直接产生结果,并且可以在Rstudio中直接进行交互式操作
可通过鼠标拖动,调整观察位置,缩放以及查看所在位置的数值情况 在一次项目中绘制的一副概率估计3D图,Z表示事件在该点的概率预测值。2.绘制2维数据的3D密度估计图
密度估计图的效果library(MASS)
data(geyser)
View(geyser)#是一组来自于MASS包的二维的分布数据,分布值不连续且各维度取值有重复,故可以进行密度分布估计
kd<-with(geyser,kde2d(duration,waiting,n=50))#对数据进行核密度估计,n可以调节密度估计结果的平滑程度,返回值为一组三维的list
p2<-plot_ly(x=kd$x,y=kd$y,z=kd$z)%>%add_surface()#直接进行绘制
p2
3.绘制出分层效果
这里用到了一个99X99的2维矩阵new_mt,矩阵的数值代表一个概率值。
分层效果n1=new_mt+1#定义一个上层的矩阵
n2=new_mt-1#再定义一个下层的矩阵
p3=plot_ly(showscale=FALSE)%>%add_surface(z=~new_mt)%>%add_surface(z=~n1,opacity=0.95)%>%add_surface(z=~n2,opacity=0.9)#opacity参数代表模糊程度,0~1进行设置。
p3
以上就是对这个包绘制3D图的基本介绍,值得一提的是,在R中可以直接将图输出保存为网页html的形式,方便展示
保存为网页导出附plotly官网对该库的介绍: