分享

ggplot2也能绘制3D图形啦!!

 萌小芊 2018-05-23

这篇文章介绍gg3D包,gg3D是ggplot2大家庭中新近加入的一个扩展包。目前还托管在guihub上,gg3D提供了对ggplot2的3D透视投影,克服了ggplot2只能在2维空间中绘图的限制。

      gg3D包只有5个函数分别为:axes_3D 绘制3D坐标轴,axis_labs_3D 标记坐标刻度,labs_3D标记坐标标签,stat_3D 绘制几何对象,stat_wireframe绘制3D线框或3D曲面.

gg3D通常与 theme_void 以消除二维坐标系统.

绘制鸢尾花数据集

library(gg3D)
theta=0
phi=20
ggplot(iris, aes(x=Petal.Width, y=Sepal.Width, z=Petal.Length, color=Species)) +  axes_3D(theta=theta, phi=phi) +  stat_3D(theta=theta, phi=phi) +  axis_labs_3D(theta=theta, phi=phi, size=3,               hjust=c(1,1,1.2,1.2,1.2,1.2),               vjust=c(-.5,-.5,-.2,-.2,1.2,1.2)) +  labs_3D(theta=theta, phi=phi,          hjust=c(1,0,0), vjust=c(1.5,1,-.2),          labs=c('Petal width', 'Sepal width', 'Petal length')) +  theme_void()

绘制三维曲线

ggplot(ChickWeight, aes(  x=as.numeric(Diet),  y=as.numeric(Time),  z=as.numeric(weight),  color=Chick)) +  theme_void() +  axes_3D(theta=30, phi=20,colour='red') +  stat_3D(theta=30, phi=20, geom='path') +  theme(legend.position = 'none',        panel.background=element_rect(fill = 'black')        )

绘制三维曲面

s = seq(-pi, pi, length= 100)
x <->expand.grid(s,s)$ Var1y <->expand.grid(s,s)$ Var2x1=c(x,x);y1=c(y,y);g=c(x,y)
z <->sin(x1)+cos(y1)
dt <->data.frame(x=x1,y=y1,z,g)
ggplot(dt, aes(x=x,y=y,z=z,group=g)) +  theme_void() +  axes_3D(theta=theta, phi=phi,colour='black') +  stat_3D(theta=theta, phi=phi, geom='path',colour='557799')+  theme(panel.background=element_rect(fill = 'black')  )


gg3D包的不足:

  1. 坐标系统还不够完善,不能够自定义坐标刻度风格.

  2. 颜色的透明度不能随意设置.

  3. 只支持点对点数据格式,不支持公式化数据格式,不符合三维空间中常用的数学表示方法,这也会浪费很多时间在数据的设计上.

  4. 目前该包只支持point,line,path三种几何类型,不支持pie,bar,hist对象

END

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多