12.1版本中的全新数据交互控制和格式选项功能

2020-08-25 11:31:21 浏览数 (3)

Stephen Wolfram在他的博客中宣布了Mathematica 12.1版本的正式发行,提到了Dataset相关的更新,以便我们更便捷地研究、理解和演示你的数据。下面是如何使用更新后的Dataset,以及你可以如何利用这个函数更深入地了解你的数据的方法。

新的交互功能

我们已经向Dataset列标题上下文菜单添加了对你的数据进行排序和逆排序的选项:

如果一个Dataset有多个不同的数据,你可以同时对多列数据进行排序:

将鼠标悬停在行标题列上方的空白单元格角落可以对行标题进行排序。当菜单指示标记(

)出现时,右击可以调出上下文菜单并选择一个排序项目:

隐藏和显示项目也在所有Dataset单元格的上下文菜单中,用于特定数据分解某部分的聚焦视图:

所有选项

排序和隐藏是你研究数据的可交互工具。用Dataset的新格式选项,你可以更易懂的方式展示你的数据并发现模式。

下面完整地列出了Dataset的新选项:

AlignmentBackgroundItemSizeItemStyle

Dataset项的网格状格式

HeaderAlignment HeaderBackgroundHeaderSizeHeaderStyle

Dataset标题的网格状格式

ItemDisplayFunction HeaderDisplayFunction

对项和标题格式的完全控制

HiddenItems

哪些项初始设置为隐藏

MaxItems

不需要滚动条或省略号的情况下可以展示出的项的最大数量

DatasetDisplayPanel

初始向下展开的位置

ScrollPosition

初始滚动的位置

在下面的部分中,我会解释这些项的基本函数,然后更深入地讨论选项值语义。这样的讨论可以让你学会如何用成百上千种有用的方法在Dataset数据中应用选项值。

Alignment,Background,ItemSize,ItemStyle 和其对应的标头

这些你们在Grid函数中熟悉的选项,同样可以应用于Dataset。下面展示的是默认样式下的数据组:

下面展示了同样的Dataset,但样式设置为年龄右对齐,背景为橙色,并将“children”项输入设成斜体(想要改变Dataset的选项,可以用Dataset[...]包装起来并指定新的选项):

每个样式选项都有一个类似的标头选项作用在Dataset的标头而非项目上:

ItemDisplayFunction, HeaderDisplayFunction

如果基础样式选项不能满足你的需求,你可以使用 ItemDisplayFunction 和HeaderDisplayFunction 选项完全控制项目和标头的格式。

以下是一个项目的展示函数,用符号取代了原本表示性别的“男性”和“女性”,然后标头的展示函数也随之改变了“性别”的标头:

展示函数给定了三个参数:项目或标头值、项目或标题的路径,和整个数据组自身。以下是一个使用第二(路径)参数来突出有与父母相同名字的孩子的标头展示函数:

HiddenItems

用 HiddenItems 选项指定哪些 Dataset 项目的初始状态为隐藏:

想要默认隐藏所有项目并显示单个项目,可使用 All 来隐藏所有项目,然后使用 path→False 制造异常状况:

使用path→True可对异常状况进一步制造异常,隐藏那些显示的项目:

MaxItems

在12.1之前,你对显示多少 Dataset 项目的唯一控制方法是通过 Dataset`$DatasetTargetRowCount。但在12.1中,MaxItems 选项让你可以控制显示行和列的数量,并可以对更深层的内容进行控制。比如,想要将显示的行数量限制在3,则指定MaxItems→3:

给出一个指定多个层级(行、列)的列表:

你可以在任意深度指定数量限制。在这个范例中,每个行星显示的卫星数量被限制在1个:

DatasetDisplayPanel

当你点击某个 Dataset 标头,该标头会在数据组中向下展开:

可以直接用DatasetDisplayPanel来指定初始向下展开的位置,可以给出向下展开的路径:

ScrollPosition

当Dataset有滚动条时,你可以用ScrollPosition指定初始滚动条的位置,可以给出初始竖直和水平位置:

深入研究选项语义

Dataset的样式选项有丰富的可以支持模式、循环说明和值函数等的语义。为了向大家展示这些是如何工作的,我将会带大家深入了解Background的语义。其他样式选项的工作原理类似。

为了在一个Dataset中对所有项目应用相同的背景色,指定一个颜色:

想要为下一个Dataset层级指定一个不同颜色的话,给出一个列表:

但是,这把所有单元格都变成绿色了!这是因为黄色的行和青色的列混合给出了绿色的背景。可以在下一个范例中看到更清晰的解释。

在给定的层级上给出一个列表可以将颜色应用于连续元素。在这个例子中,第一行是黄色的,第二行是青色的,其他则都是默认的颜色:

如果你用类似的方法为列上色,则在相交的地方颜色也会相互叠加。所以{"Eva","age"}和{"Deb","sex"}这两个格子是绿色的,因为叠加了黄色和青色:

在Grid中,你还可以指定某个层级的元素在开始、中间和末尾需要使用的背景颜色。下例把第一行指定为红色,第二行为橘色,然后黄色和白色交替出现,直到最后一行又重新为红色:

背景色混合(像Grid里一样)便可以支持这种样式,也让长行和长列更容易设置:

除了Background选项外,其他选项的值是不会叠加的。后来的值会覆盖较早的值。且在Background选项值中,通常只有在同为某一规格说明的一部分时,颜色才会叠加。在这个例子中,列的颜色覆盖了行的颜色,只有在列的颜色为None时,才会显示行的颜色:

你可以在任意层级指定值。想要在给定层级使用默认颜色,只需指定Automatic。在这个范例中,在“children”列的项处于Dataset的第三层级,被指定了黄色和橙色,而更高层级的项则是默认颜色:

当你将鼠标悬停在一个Dataset元素上方,你会在数据组框架的下方看见其路径被显示出来。想要对该元素应用一个背景颜色,只需在Background值中某规则的左手边指定该路径即可:

如果你给出的是一个非列表形式的元素,而非规则左手边上的一条路径,则给出的值会应用在任何包含该元素的路径上:

结合层级语义和路径语义可以指定一个基本规则和一些异常情况,比如这里所有的行都是黄色,只有“Eva”行的颜色是青色:

元素路径可以包括任意式样。这里“Eva”和“Ann”行都是青色:

式样可以是随机复杂的。下面这个例子把所有在标头中包含了小写或大写a的行都设定为青色:

路径施加的限制在颜色整体应用于Dataset之后生效。对比这些范例。首先,最高层级的行被设置为黄色、白色和青色:

然后再“3”列加上一个路径说明可以限制该列的颜色:

想要向{All, "3"}列的单个行应用黄-白-青的颜色,可以指定这些项所在层级,即第四层级,的颜色:

由于上例中只对“3”列的内容进行了着色,所以不需要路径限制。下面是另一种指定同一个设定的方法:

任何样式选项中的规范值都可以是一个可返回值的函数。这也提供了一种为数据设置高亮式样的有用方法。下例中,是前100个正整数,其中质数都被高亮为黄色了:

值函数的参数是项或标头的值、数据组内的路径和整个数据组。数据组作为参数使得基于整体属性的局部样式设置成为可能。在这个范例中,根据性别信息设定行的颜色。每一项的颜色都根据其在“sex”这一项的内容进行判断:

整合

新的Dataset选项目的是帮助你更好地了解你的数据,并更有效地将其展现出来。下面我们会给出几个范例供你参考。

这是一个内置Titanic数据组的范例:

使用ItemDisplayFunction和颜色背景进行样式设置,使得数据更直接易懂:

由于样式选项并不影响数据组的内容,你可以使用它们以任何格式来展示数字数据,而不需在原数据上做出让步:

使用着色可以让我们更快地在数据中挑出显著值。在本例中,复数为红色,且每列的最大值和最小值分别用蓝色和粉色进行高亮:

热力图尤其适合使用背景颜色函数:

如果想要更紧凑的展示方式,可以用Tooltip隐藏数据。然后在每一项上方悬停鼠标可以显示该值:


12.1版本在功能性上给予了Dataset很大的提升,但是这还没有结束。在未来的版本中还会有更多功能。

0 人点赞