美文网首页
用Tableau画3D模型之一(入门篇)

用Tableau画3D模型之一(入门篇)

作者: 扫地sir | 来源:发表于2020-02-26 11:18 被阅读0次

    这次我计划用三篇文章来介绍用Tableau制作3D模型的方法,分为入门篇、提高篇和进阶篇。

    今天我们先来入门,学习一下双轴旋转的3D模型制作方法。

    相信很多接触过Tableau的同学都看过Noah Salvaterra的3D特斯拉模型。当我第一次看到这个Viz的时候佩服的五体投地,自己也特别想做一个,奈何对原理完全摸不着头脑,也就放弃了。

    https://public.tableau.com/profile/nsalvate#!/vizhome/TableauTesla/TableauTesla

    最近发现Public上的3D模型多了起来,也就又激起了自己的研究欲望,找了几篇国外大神的文章,钻研了几天,终于小有收获,自己也实验成功。

    确实是前人栽树后人乘凉,特别要感谢那些无私奉献的大神们。

    在Tableau中开3D模型之先河的应该是Bora Beran,一位低调的数学大神。他的开创性工作,让人受益匪浅。大家可以下载他的Viz,研究一下,我的文章也以此为依据进行讲解。

    Bora Beran的博客:
    https://boraberan.wordpress.com/2015/12/18/going-3d-with-tableau/
    Bora Beran的3D模型下载:
    https://public.tableau.com/profile/bora.beran#!/vizhome/3DChartsinTableau/CaffeineMolecule

    关于数学原理

    3D坐标系转换成平面坐标系的数学原理,我找了一些资料和近似的公式,说实话,我完全搞不懂,当然也没必要搞懂,踏着大神的足迹前进就可以了。

    构造数据集

    我们从画一个最简单的长方形开始。

    假设这个长方形的长=2,宽=1,高=1,这样8个顶点的x、y、z坐标就确定了。

    id,x,y,z
    1,0,0,0
    2,0,1,0
    3,0,1,1
    4,0,0,1
    5,2,0,0
    6,2,1,0
    7,2,1,1
    8,2,0,1
    

    创建计算字段

    • 创建维度XZ - Angle (Radians)
    • 创建维度YZ - Angle (Radians)

    这里先从最简单的双轴旋转开始,只建立两个参数作为旋转轴。参数的范围可以自己再调整。

    • x_rotated=[x]*COS([XZ - Angle (Radians)])+[z]*SIN([XZ - Angle (Radians)])

    • z_rotated=-[x]*SIN([XZ - Angle (Radians)])+[z]*COS([XZ - Angle (Radians)])

    • y_rotated=[z_rotated]*SIN([YZ - Angle (Radians)])+[y]*COS([YZ - Angle (Radians)])

    创建图形

    • 将[x_rotated]拖到行功能区,[y_rotated]拖到列功能区
    • 将[id]拖到标记栏“详细信息”和“标签”
    • 这里最好固定x轴和y轴(-3和3之间)

    这时就可以调整参数来变换角度了。

    对于只有点的数据来说,非常的简单,只要知道坐标就可以,但是如果需要把点之间连线,该怎么做呢?

    增加连线

    上面的数据集就不能满足要求了,需要更改数据集。这和做网络关系图有点类似,两点确定一条直线,长方形有12条边,就需要24行数据。

    group,id,x,y,z
    1-2,1,0,0,0
    1-2,2,0,1,0
    1-4,1,0,0,0
    1-4,4,0,0,1
    1-5,1,0,0,0
    1-5,5,2,0,0
    2-3,2,0,1,0
    2-3,3,0,1,1
    2-6,2,0,1,0
    2-6,6,2,1,0
    3-4,3,0,1,1
    3-4,4,0,0,1
    3-7,3,0,1,1
    3-7,7,2,1,1
    4-8,4,0,0,1
    4-8,8,2,0,1
    5-6,5,2,0,0
    5-6,6,2,1,0
    5-8,5,2,0,0
    5-8,8,2,0,1
    6-7,6,2,1,0
    6-7,7,2,1,1
    7-8,7,2,1,1
    7-8,8,2,0,1
    
    • 我们可以直接将上面做好的工作表数据替换成新的数据集。
    • 将新的[group]字段拖到详细信息。
    • 复制[x_rotated]字段,做双轴并同步轴。
    • 将[id]字段拖到标记栏“路径”里,类型改为“线”。

    至此大功告成,快去自己试验一下吧。

    此篇文章已发布到我的公众号:saodisir,有兴趣也可关注一下

    相关文章

      网友评论

          本文标题:用Tableau画3D模型之一(入门篇)

          本文链接:https://www.haomeiwen.com/subject/eohtchtx.html