前面的文章中有提到做出像动画的效果,链接地址使用Power BI 实现动画效果。那么就有小伙伴提问了,有没有3D效果呢?答案是肯定的,今天我们就来看一下。
正投影是一种使用二维空间表示三维对象的方法。在Microsoft Power BI中,如果在组成(x,y,z)的三个独立列中具有一组坐标,则可以非常轻松地实现3D效果。在下面的示例中,我使用了具有从人脸轮廓中获取的坐标的数据集,并构建了一个报告,该报告允许用户沿三个轴旋转人脸。
让我们看一下如何构建它。
数据
获取在三个单独的列中具有坐标的数据集。就我而言,我需要添加一个Index列,以便一旦将它们添加到Power BI中的视觉对象后就可以将所有点分解为唯一的行。您的数据可能看起来像这样:
新建参数
动态旋转依赖于“假设”参数。添加与三个轴相对应的三个“假设”参数。就我而言,我使用了-90到90度的可能旋转值,但是您可以使用0到360,-180到180等值。请确保选中“将切片器添加到此页面”选项。使用切片器可以使用户动态旋转对象。
X Rotation = GENERATESERIES(-90,90, 1)
X和Y度量
通过添加以下两个措施,可以实现从三个坐标到2D平面的投影。确保调整顶部的列引用和假设参数名称,以与您自己的数据相对应。
这是我的“正交x”度量。最初的六个粗体值是您需要调整以适合自己的数据和参数名称的值。
Ortho x = VAR x = MIN ( Coordinates[x] ) VAR y = MIN ( Coordinates[y] ) VAR z = MIN ( Coordinates[z] ) VAR xDegrees = RADIANS ( 'X Rotation'[X Rotation Value] ) VAR yDegrees = RADIANS ( 'Y Rotation'[Y Rotation Value] ) VAR zDegrees = RADIANS ( 'Z Rotation'[Z Rotation Value] ) VAR x0 = x VAR y0 = y * COS ( xDegrees ) + z * SIN ( xDegrees ) VAR z0 = z * COS ( xDegrees ) - y * SIN ( xDegrees ) VAR x1 = x0 * COS ( yDegrees ) - z0 * SIN ( yDegrees ) VAR y1 = y0 VAR finalX = x1 * COS ( zDegrees ) + y1 * SIN ( zDegrees ) RETURN finalX
这是我的“正交 y”测量。同样,前六个粗体值是您需要调整以适合自己的数据和参数名称的值。
Ortho y = VAR x = MIN ( Coordinates[x] ) VAR y = MIN ( Coordinates[y] ) VAR z = MIN ( Coordinates[z] ) VAR xDegrees = RADIANS ( 'X Rotation'[X Rotation Value] ) VAR yDegrees = RADIANS ( 'Y Rotation'[Y Rotation Value] ) VAR zDegrees = RADIANS ( 'Z Rotation'[Z Rotation Value] ) VAR x0 = x VAR y0 = y * COS ( xDegrees ) + z * SIN ( xDegrees ) VAR z0 = z * COS ( xDegrees ) - y * SIN ( xDegrees ) VAR x1 = x0 * COS ( yDegrees ) - z0 * SIN ( yDegrees ) VAR y1 = y0 VAR finalY = y1 * COS ( zDegrees ) - x1 * SIN ( zDegrees ) RETURN finalY
散点图
一旦有了两个新的X和Y度量,就可以在报表中添加散点图。将X度量拖到X轴,将Y度量拖到Y轴,然后将其拖到Detail的唯一索引中。
条件格式
要使沿z轴的深度具有更好的视觉外观,请向散点图添加条件格式。转到格式并展开数据颜色。将鼠标悬停在该区域上,然后单击出现的[…],然后选择“ 条件格式”。
最后,我调整了一些其他格式选项,例如Shape,以减小点的大小。完成所有构建后,我现在在数据中有了一个“面孔”,该面孔从原始数据集中获取了3D坐标,并投影到了2D Power BI散点图上。