可视化 4 维数据有哪些流行的选择?

机器算法验证 r 数据可视化
2022-02-13 09:12:50

假设我有以下四维数据,其中前三个可以视为坐标,最后一个可以视为值。

c1, c2, c3, value
1, 2, 6, 0.456
34, 34, 12 0.27
12, 1, 66 0.95

如何更好地可视化前三个坐标对最后一个值的影响?

我知道三种方法。

一个是前三个坐标的 3D 图,点的大小为四个值。但要从数据中看出趋势并不是那么容易。

另一种是使用一系列 3D 绘图,每个绘图都有一个固定的坐标。 在此处输入图像描述

另一个可能是 R 格中的所谓“格子图”。不确定它是否用于此目的,但似乎如此。 在此处输入图像描述

3个回答

如果前三个只是空间坐标并且数据稀疏,您可以简单地使用不同大小或颜色的点来绘制 3D 散点图。

看起来像这样:( 来源:gatech.edu分散

如果您的数据旨在本质上是连续的并且存在于格子网格上,您可以使用Marching Cubes绘制数据的多个等值线

当您拥有密集的 4D 数据时,另一种方法是显示嵌入 3D 中的数据的多个 2D“切片”。它看起来像这样:

切片

你有四个定量变量吗?如果是这样,请尝试游览、平行坐标图、散点图矩阵。R 中的 tourr(和 tourrGui)包将运行 tours,基本上是高维旋转,您可以选择投影为 1D、2D 或更多,并且包中引用了一篇 JSS 论文,您可以阅读以入门。平行坐标图和散点图矩阵在 GGally 包中,散点图矩阵也在 YaleToolkit 包中。您还可以查看http://www.ggobi.org以获取有关所有这些的视频和更多文档。

如果您的数据是完全分类的,您应该使用马赛克图或变体。看看 R 中的 productplots 包,vcd 也有一些合理的功能,或者 ggparallel 包对分类数据做平行坐标图的等效。另外,刚刚发现 extracat 包有一些显示分类数据的功能。

我最初误读了这个问题,因为我停在了这个问题上,而忽略了阅读完整的描述。类似于下面的方法(3D 中的着色点),您可以使用链接刷来探索在高维空间上定义的函数。看看这里的视频,它显示了为 3D 多元法线函数执行此操作。画笔以高密度(高函数值)绘制点,然后移动到越来越低的密度值(低函数值)。函数采样的位置显示在 3D 旋转散点图中,使用巡视路线,也可用于查看 4、5 或更高维域。

试试Chernoff 面孔这个想法是将变量附加到面部特征。例如,微笑的大小是一个变量,脸的圆度是另一个变量等等。听起来很荒谬,如果你找到一种将变量映射到特征的聪明方法,这实际上可能会起作用。

另一种方法是显示 3-d 相图的 2-d 投影。假设您有 x1,x2,x3,x4 变量。对于 x4 的每个值,绘制 (x1,x2,x3) 点的 3-d 图,并将这些点连接起来。这在订购 x4 时效果最好,例如它的日期或时间。

更新:您也可以尝试气泡图。三个维度通常是笛卡尔 x、y、z,第四个维度是气泡点的大小。

您可以尝试动画,即使用时间作为第四维度。

也是气泡和动画的组合:x、y、气泡和时间。

此外,与 Chernoff 相关的是glyph plot,它可能看起来更严重一些。它是光线长度与变量值成正比的恒星。