大家好,我是John Powell,JMP团队的软件开发经理。今天我要讲的是JMP如何进入一个全新的维度。我指的不是增加变量,我们早就通过气泡图、散点图矩阵和多维分析器实现了这一点。接下来我就直接进入正题。
不过,我今天要谈的是这第三维度。我的意思是,我们现在使用的技术不再局限于二维物体,而是绘制三维图像。关键在于如何让物体在平面屏幕上呈现出三维效果。
要在平面屏幕上实现深度感知,基本上就是模仿人们在现实世界中感知事物的方式。比如,你看一张纸,它只是纸上的平面图像。但在房间里,你面对的是三维空间,有前后左右四个方向。如果你观察房间里的物体,你会发现它们会根据光线照射的位置呈现不同的阴影。这就是让人们误以为平面屏幕上的物体是三维立体的一种方法。
还有一种方法是,当你观察近处的物体时,它们看起来会比远处的物体大得多。这是我们在平面屏幕上营造三维效果的一种方法。这种遮挡,简单来说就是让一个物体离你更近,从而遮挡住它后面的物体。我们会运用所有这些技巧,以及更多其他技术,让你在我们的3D图表中看到一个真实的3D物体。
我主要要讲的是JMP中的3D散点图平台。这里有一个JMP中的示例。它以鸢尾花为例,展示了鸢尾花的大致外观。图中显示了三种不同的鸢尾花,它们用不同的颜色表示。这些信息都编码在数据表中。
我这里底部显示的是萼片宽度和萼片长度。垂直方向显示的是花瓣长度。你可以看到所有这些球体在三维空间中的样子。它们看起来有点扁平。一旦你开始移动它们,你就会发现它们实际上是三维的。在JMP中如何实现这一点呢?
你进入图形菜单,找到“散点图 3D”,然后会弹出一个类似这样的对话框。基本上,你只需要输入三个 y 列。这些就是我在这个例子中使用的列。然后点击“确定”。如果你发布 JMP Live,它看起来会是一样的。我们的目标是让它在 JMP 中看起来一样,并且具有交互性。我无法在幻灯片上演示,但我稍后会演示。让我先回到正题,说说什么是散点图 3D?它有什么用途?
它非常适合演示那些具有真实世界概念的数据,例如前后左右上下,以及深度信息。并非所有数据都如此。你也会遇到抽象数据。用三维方式查看这些数据会很有帮助。在三维空间中,你可以发现那些在与任何坐标轴对齐的平面上都无法看到的模式。
举个例子。你可以看到,当你沿着 x 轴直视时,你实际上看不到任何图案,但如果你旋转图像,从右图的这个特定角度观察,你会发现它们大致排列在一个与任何轴都不对齐的平面上。
在 3D 视图中,你很容易发现另一个特点:当你旋转视角时,你会注意到一些在正面观察时可能看不到的聚集区域。它还有什么其他用途呢?例如,如果你要比较多个 2D 图,而且这些图可能跨越不同的时间点,那么 3D 视图就非常有用。
如果你看左侧底部的坐标轴,它代表时间。你可以看到从后向前随时间变化的 3D 图。这些图可能代表的不是时间,而是不同的生产地点,你可以用 2D 图来分析这些地点的情况。
这里还有另一个例子,假设你在一个二维网格上有很多测量值,其中 X 和 Y 轴代表网格,而测量值就是你在这个网格上进行的测量。你可以看到右侧的图表。有很多点的测量值很高,而其余的点则很低。当你观察三维图像时,就能看到这种现象。
问题是,为什么现在才推出?为什么我们花了这么长时间才在网页上实现这个功能?我这就来详细解释。为什么我们等到现在才支持它?说来话长,我先提醒您,接下来会是一句很长的句子。我们一直以来的做法是优先支持大多数用户经常使用的功能。我们希望尽早为您提供尽可能多的功能。
散点图 3D 是 JMP 中少数几个并非所有用户都常用,而是专门服务于特定用户群体的功能之一。为了在公司内部推广统计文化,JMP Live 需要支持能够吸引多元化员工群体的交互式报表,这些员工不仅包括工程科学家,还包括市场营销、财务等部门的人员。
部分 JMP Live 用户对可视化的需求可能与科学和工程部门有所不同。我们已经支持大多数用户常用的大部分功能。此外,我们还新增了对 3D 散点图以及其他一些用户偶尔会用到的功能,例如直方图中的多响应数据和局部数据过滤器。
统计过程控制包括过程筛选、控制图警告分类和环境监测。我们新增了许多分析器,尤其是在可靠性平台方面。红色三角形菜单仅在 JMP Live 中可用,旨在让 JMP Live 用户更好地控制他们正在查看的内容。
此外,它还支持图表和工具提示(在 JMP 中通常称为“图形小部件”)、用于文本处理的词云以及饼图。饼图人人都爱,统计学家未必喜欢,但在商业领域却非常流行。使用 JMP Live,您可以与公司里的每个人分享这些图表。有些人喜欢饼图,还有许多其他改进,这里我就不一一赘述了。
我想说的是,这并不是我们在这个版本中做的唯一改动。还有很多其他改动,现在也是时候去做这些改动了,因为JMP Live拥有更多元化的受众群体,我们也希望吸引他们。
随着新版本的发布,请关注所有功能的视频、博客和现场演示,并亲自体验。以上就是关于散点图 3D 的简短介绍,现在我们继续。
我想确保您了解这个散点图 3D 平台的所有功能。它不仅仅是可视化三个或更多变量那么简单,它包含许多功能,并且分布在多个用户界面中。我将深入讲解这些功能,首先介绍您可以自定义和控制散点图 3D 的不同方法,因为它在多个地方以及 JMP 的用户界面中都有提供。
我们先从启动对话框开始,我之前已经展示过,但当时没有详细讲解。除了三维空间中的三个 Y 轴列之外,你还可以添加权重来控制这些球体的大小、频率和颜色。我之前展示的颜色来自表格。它也可以来自变量,例如,如果我输入物种,而表格中没有根据物种进行着色,那么它就会根据物种进行着色。你甚至可以输入一个连续变量,它会根据该变量进行着色。
接下来当然是红色三角形菜单选项,JMP 的 3D 散点图平台提供了丰富的选项。例如,您可以从图中的点垂下线条,连接图中的点,在图中的聚类周围显示正态分布轮廓椭球,以及绘制非等值线密度轮廓和主成分分析。还有一些其他功能,但我不会一一介绍。
接下来是右键菜单。当您查看 3D 图表时,右键单击就会弹出此菜单。如果您设置了颜色角色,则可以选择是否显示图例。然后是重置按钮,用于重置设置。接下来我会向您展示设置对话框。高亮边框。如果您设置了光源等效果,则可以设置边框。此外,还可以设置墙壁和背景颜色,使图表看起来更美观,或者根据需要使数据更加突出。
最后,JMP 中还有一个硬件加速选项,默认情况下是关闭的。如果启用它,性能将会提升。接下来还有几个其他功能,您可以自己尝试一下。您刚才看到的是设置选项。可以通过按住 Control 键点击菜单或右键单击菜单进行设置。界面如下所示。
它可以让你启用或禁用墙壁、坐标轴、网格和框线。框线就是一个框,就是围绕所有图形区域绘制的那条细线框。在 3D 环境中,你需要相机控制功能,因为你需要能够放大、显示不同的视角、旋转等等。这一点也很重要。
现在有了标记,您可以指定标记的许多属性,例如标记大小、标记质量(决定其绘制方式)以及透明度(允许您透过标记点看到其背后的数据)。此外,还有文本大小和线宽。文本大小用于轴标签,线宽用于您看到的网格线。
我之前提到过,你可以在数据表本身中设置一些内容,比如标记形状,这里是三角形标记形状,还有红色和绿色。颜色也嵌入在那里,那个看起来像蒙版的小东西是用来设置可见性的。
这里还有一些我没有展示的排除项,但它们可以在数据表中设置,并在 3D 图表中显示。可以单独为每一行启用标签。这就是黄色标签的样子。它表示当你显示某个点时,会在其旁边显示一个标签。在本例中,标签是物种名称。
当然,你必须能够旋转视角。这能让3D效果看起来更好,也能帮助你更好地理解画面内容。我很快就会演示给你看。你必须能够旋转视图,还需要能够沿坐标轴缩放和平移。如果你想聚焦于某个细节,这些功能就非常有用。
当然,文件菜单允许您导出为交互式 HTML,以便在网页上查看交互式 3D 图表,或者发布到 JMP Live,同样可以在网页上查看 3D 图表。此外,还有许多静态图像导出选项,但它们对 3D 图表的帮助不大。
这是我们迈入三维世界的第一步。正如我所说,我们正在进入这个维度。这非常复杂,因为渲染技术完全不同。鉴于此,我们必须限制散点图 3D 的应用范围,以下是一些需要注意的地方。首先,我们需要设置支持三种不同坐标系(三个不同的坐标轴)的功能。
这些相机控制功能对于环顾场景和旋转视角至关重要。在桌面端我们使用鼠标,而在移动端则使用鼠标。由于我们支持移动端,您将像在移动设备上一样使用滑动和捏合手势。
在二维图形中,你几乎不需要手动裁剪窗口边缘的内容。这会自动完成,因为当你在窗口上绘制时,任何绘制在窗口之外的内容都不会显示。但在三维图形中,由于你可以围绕物体旋转,位于三维场景之外的内容(我称之为“场景边缘裁剪”)需要进行裁剪。否则,当你旋转物体时,这些超出场景边缘的内容仍然会显示出来,这是我们不希望看到的。
我们还得在物体旋转时隐藏墙壁和网格线,以免它们遮挡数据。这一点非常重要,但实现起来却很困难。我们需要设置背景、墙壁、坐标轴、网格和方框的碰撞可见性,以匹配 JMP 的功能。一旦能够绘制它们,设置可见性和颜色就变得非常简单,所以我们就完成了。
正如我之前提到的,它们功能多样,绘制方式也多种多样。它们的大小、颜色、形状和透明度都相当复杂。我们支持所有这些仅使用点的选项,但目前还没有提供在浏览器中更改这些选项的方法。
硬件加速。实际上并没有专门的设置选项,因为在浏览器中,如果你的浏览器支持三维图形(现在大多数浏览器都支持),那么它会自动启用硬件加速,你也不应该关闭它,因为那样只会降低速度。
现在,很遗憾,JMP Live 目前不支持一些比较重要的功能,但我们希望在未来的 JMP 版本中优先考虑这些功能。这需要收集大家的反馈,了解你们希望看到哪些功能。例如,红色右三角菜单中的“放置线”、“连接点”和“主成分分析”等功能,以及椭球体和等高线等曲面。这些功能目前都不支持,甚至连表格中的行标签也不支持,因为在点场景中编写完整的文本有点复杂。
目前不支持坐标轴缩放。如果您在导出或发布到 JMP Live 之前缩放过坐标轴或平移过视图,我们将予以支持。工具提示和选择功能实际上并未包含在此版本中,但我们预计在维护版本中至少能够支持工具提示。
如果某个功能不受支持会怎样?这和我们之前不支持某些功能的二维图表的情况类似。此时,图表(在本例中为交互式三维图表)将被屏幕截图替换,并且 JMP 日志中会添加一条消息,指出正在使用哪个不受支持的功能。您可以利用这条消息联系技术支持,说明您希望支持此功能。日志中已经记录了该功能的名称,方便您提出请求,或者您也可以使用功能愿望清单。
我们非常鼓励您提出这些功能需求。正如我之前所说,我们会根据您的反馈来确定优先级。这也是我们花了这么长时间才推出 3D 功能的原因之一。我们收到了大量关于大家常用的 2D 功能的反馈。现在 3D 功能已经上线,我们希望未来能够推出更多功能。
我想这就是大家期待已久的时刻了。我之前说过会演示一些相关内容,因为如果只看静态的3D图表,真的很难理解它到底在讲什么。现在我切换到JMP Live界面。这里我们已经切换到JMP Live的全屏模式了。
为了向您展示三维图像与平面屏幕上三维图像的对比,我们使用等高线图来表示,左侧的数据集代表一个小池塘。我们实际上只是在展示池塘不同位置的深度,红色代表浅水区,蓝色代表深水区。通过等高线图,您可以大致了解其含义。
静止不动时,观察散点图很难看出深度,但一旦开始旋转它,尤其是在网页上……由于视频录制的原因,画面可能会有些卡顿,但当你尝试旋转时,画面就会变得非常流畅。
当你旋转视角时,甚至可以看到池塘底部的凹凸起伏等等。我认为这比用等高线图上的颜色来呈现深度感要好得多,当然,我可能有点主观。这并不是一个很复杂的例子,我只是想向你展示,即使在 3D 场景中,如果你不抖动左侧的点,抖动也是你可能需要做的。例如,你可以看到所有点都排列在女性的平面上,如果我旋转视角,从男性平面向下看,所有点都会排列在一起,并且相互遮挡。这就是遮挡效应。
如果您希望发布后的效果立竿见影,可以对这些点进行抖动处理,也就是将它们在该平面左右移动。在右侧,您可以看到这些点是如何围绕阴平面和阳平面抖动的,这样它们就不会互相遮挡——否则在某些角度下它们会互相遮挡,但在正面观察时则不会。
回到鸢尾花数据集,正如我之前提到的,这里包含了不同品种的花朵。我想通过这张图以及我们常用的其他图表来展示JMP的强大之处,那就是它在图表选择上的反射特性。
在这个仪表板的双变量图表中,当我进行选择时,可以看到 3D 视图中的点被高亮显示,分别是茶馆、夏日蓝和夏日绿。这些高亮显示的点与 2D 视图中高亮显示的点相同,也与下方分布图中高亮显示的点相同。同样地,如果我点击分布图,您也会在 3D 图表中看到这些高亮显示的点。
我之前好像提过,你看到的颜色来自数据表,每个物种都有对应的颜色。这个数据集大概有150行,所以你现在看到的就是这么多。这只是个测试示例,用来展示选择不同标记形状时的效果。这里展示了32种内置的标记形状。
3D渲染标记形状的特殊之处在于,旋转视角时,我们希望它们始终朝向前方。它们总是清晰可见,并且指向上方。例如,我们希望它们始终指向上方。如果您观察这个向上指向的箭头,即使我们将其上下旋转,它相对于观察者而言仍然指向上方。这在观察那些标记形状至关重要的事物时尤为重要。
这是钻石数据集,我想你们中的许多人可能已经在其他演示中见过它。这是我们的标准样本之一。我喜欢在这个特定示例中使用它,因为我要展示这里的标记形状是根据颜色变量绘制的。
为了准备这个样本,我需要用到这个数据集。颜色变量用字母 D、E、F 一直到 K 编码,例如,D 代表一颗明亮洁白的钻石,K 代表一颗略带棕色的钻石。当然,我在这里夸大了颜色差异,以便您在图表中更清楚地看到它们之间的区别。您可以看到,在绘制钻石的 4C(净度、克拉、重量、切工和颜色)时,这些字母都会出现。颜色和形状都包含编码信息。这里显示的是一堆字符,而不是钻石的形状、点或圆圈。
这是一个更大的数据集,大约有 29,000 行数据,而且数据量非常大。它记录了多家航空公司的航班延误情况,基本上涵盖了一年中的每一天。数据按星期几着色。您可以看到,在下方的两个轴上,我分别绘制了月份和日期。您可以看到所有这些数据点。
制作这样复杂的图表的目的之一是为了展示速度。正如我所说,在播放过程中,由于视频编码的原因,画面可能不够流畅,但在网页上却相当流畅,要知道网页上的播放速度通常比桌面显示器慢一些。这是因为网页的3D渲染技术非常强大。
我想放大查看,而网页标准之一是使用鼠标滚轮进行放大。我们已经在 3D 散点图中实现了这个功能,您可以看到这些点是透明的。
我还有另一个关于航班延误的例子。在这个例子中,点的大小是根据延误时间这个变量来定的。航班延误时间越长,或者当天的平均延误时间越长,球体就越大。我之前也给你们展示过球体,但数量没有这么多。这里面有很多球体。当我旋转它时,画面非常平滑。
当我放大图片时,你会看到这些球体有多么复杂。它们实际上被分割成了许多细小的三角形,这样看起来才会光滑平整。此外,它们还应用了我之前提到的光照效果和阴影,使它们看起来像三维物体。如果你不熟悉泰坦尼克号乘客的数据集,这是一个关于当时情况的样本,讲述了船上发生了什么,以及人们是否幸存。
在这个例子中,我用颜色来表示他们是否幸存。颜色大小是根据他们支付的船票价格来定的。我还调整了背景颜色,这样你就能看出这或许有助于查看数据。和其他例子一样,这个例子的数据变化很快。我不记得具体有多少人了,但我相信肯定超过一千。这里面有很多数据点。
它们都是球体,大小也各不相同。我真正想通过这些并排比较展示的是,我之前说过,如果沿某个轴缩放或平移,我们会尊重这种缩放效果,而这正是我在右侧所做的。这里我先放大乘客,只显示一等和二等舱乘客,然后放大年龄变量,只显示20-50岁左右的乘客,而不是所有年龄段的乘客。
您可以放大该区域,可以看到我之前提到的内容,即能够裁剪场景边缘的点。我放大一下,让您看看边缘的情况。首先,您看不到完全超出数据网格的点,因为它们已被裁剪。有些点正好位于边缘。如果我再放大一些,您会看到,是的,它们实际上被裁剪穿过了球体,因为该球体正好位于我们当前显示的数据集的边缘。这并非易事,但网络技术确实使之成为可能。
回到钻石数据集。这个例子是为了展示 3D 图如何响应局部数据筛选器。很多人喜欢这个局部数据筛选器,因为它能帮助你真正了解数据集中包含哪些内容。假设我只想查看 VS2 等级的钻石。我可以点击 VS2,这样数据集中就会只显示 VS2 等级的钻石。
我应该说明一下,这里用球体表示钻石,因为我用了克拉重量来表示尺寸,颜色则代表价格。颜色越深的绿色代表价格更高的钻石。我还想展示另一个功能,那就是可以在观看的同时旋转屏幕。现在我可以一边看一边喝水,解放双手了。
基本上,即使在它旋转的时候,你也可以继续筛选,这样就能看到筛选结果不断更新。这里还有一个价格连续筛选功能。假设我不想花1万美元买钻石,我只想看看数据集里有哪些钻石。我可以把价格降到4000美元左右。如果我想花1000美元以上,比如2000美元,那么所有在这个价位的钻石都有。
当然,既然有了旋转功能,就更需要能够停止旋转。我们还添加了重置视图或切换到正面视图的功能。JMP 工具里有一些快捷键可以实现这些功能,但我们的用户群体比较广泛,可能有些人并不熟悉 JMP。所以我把它添加到菜单中,方便大家更轻松地找到这些选项。
刚才我提到了光源,你可以使用彩色光源。我去年十二月做过这个实验,我们这里雪不多,但我来自一个雪量很大的地方。如果你用漂亮的灯光,比如这里,左边是红灯,右边是绿灯,下面是蓝灯。这就是它在三维空间中的样子。这三个很大的点看起来就像一个雪人。
这是我在 JMP 用户社区找到的 Craig Hales 的一个示例。Craig Hales 是多年前为 JMP 添加 3D 散点图功能的开发者。这个示例展示了如何使用局部数据过滤器来查看空心结构的内部结构。我认为这是一个非常好的应用案例。
当我更改本地数据过滤器时,您可以看到这里有一个空心结构。我想再深入探讨一下它的原因。您可以看到它的内部结构。另外,如果您想对数据进行切片,也可以使用本地数据过滤器,只需将两个控件靠近即可。然后,如果您想仔细检查它,我们停止旋转。我可以进入检查。我可以使用滚轮放大,您可以看到这个结构的样子。
现在我想用一个例子来结束,我认为这个例子非常能说明3D的优势。就像我刚才说的,如果你有真实的3D数据,那么使用3D绘图就很有意义。这里就是这种情况。这个例子也是我从JMP用户社区了解到的,当时Peter Polito写了一篇关于名为“well trace add-in”的插件的博客。
其实就在这里的评论里。我的确有个插件可以实现这个功能。等你拿到这个插件后,我会把它上传到 JMP Public 上,让大家都能用上,到时候你就能看到他博客的链接了。
他当时在石油钻井平台上工作,是我们公司的一名系统工程师。他想通过开发一个插件来展示JMP的这项功能。这个插件可以计算钻井工具在钻井后下井的路径,并检查是否达到了预期的深度。
我从他的博客中了解到,这些油井钻探孔通常不是垂直向下钻的。这个钻井孔呈弧形,而且它位于海床下方。看到这一点并了解到这一点,我感到很惊讶。我把背景涂成了我想象中海床底部的样子,这样也让这些颜色更加突出。
我所做的,是在色差图中绘制了深度与预期深度的差异,以及数据采集点标记或位置的大小差异。如果你放大到大约 2000 米处,就能看到那里存在差异。在下方,我估计大约在海床以下 9000 米处,他们也发现了另一个存在差异的地方。我非常感谢 Peter 提供的这个例子,因为这正是使用 3D 散点图的绝佳案例。演示就到这里。
让我切换回幻灯片。[听不清 00:32:04] 幻灯片。也许我得这么做。下一张幻灯片。现在是提问时间。通常情况下,在观众席上,你会向他们提问。但这次是录音的。请在评论区留言或联系 JMP 技术支持。
正如我所说,如果您有任何想要的功能,也可以将其添加到愿望清单中。我有一个问题,或者说是一个请求。请问您是否希望我们支持类似 JMP Live 中的 3D 曲面图那样的其他 3D 图表,还是更希望我们为 3D 散点图添加更多功能?我省略了很多功能,如果您觉得这些功能很重要,我们很乐意在未来的版本中尝试实现。我的幻灯片和演示到此结束。感谢观看。