在 JSM 2019,我正在参加一个会议动态交互式数据可视化 。当我第一次被会议主席Blanton Godfrey邀请做贡献时,我的第一个想法是,“当然,JMP有很多动态和交互式的数据可视化。”但是第二个想法很快跟随,“这真的是什么?意思?这些天来,一切都是互动的。“
这导致我试图对不同的交互方法进行分类。崇高的目标是帮助定义数据可视化交互性的分类,这对于比较产品或讨论单个实现是有用的。在最初的努力中,我已经分类了九种技术,以及内部交互的视频 JMP 。
- 图形构建
- 选择链接
- 行过滤
- 悬停细节
- 模型调整
- 审美映射
- 列切换
- 卷切片
- 轴缩放
我在整个示例视频中使用相同的数据集。它包含60多个美国3000多个县的人口统计,经济和选举数据。现在开始的方法!
图形构建
交互式图形构建意味着构建或重构具有即时视图更新的图形。在JMP中,相互作用直接表面上。其他实现仍然可以与图表侧面的拖放区域交互。
LITHIUM.OoyalaPlayer.addVideo('https:\/\/player.ooyala.com\/static\/v4\/production\/', 'lia-vid-w1Yng3aTE6cNO7Pg5DSI6NI35O7flBl5w928h446r494', 'w1Yng3aTE6cNO7Pg5DSI6NI35O7flBl5', {"pcode":"ltbGkyOjMl3V3pZ3Trn6T2z1_rjF","playerBrandingId":"ODI0MmQ3NjNhYWVjODliZTgzY2ZkMDdi","width":"928px","height":"446px"});
(在我的视频中查看)
该视频突出了几个挑战。当添加第二个Y变量“Rep Pct”时,Y落差区域比以前多,所以我们可以指定相对于现有Y变量放置它的位置。颜色和尺寸下降区域是人为的,因为它们与X和Y轴变量的自然位置不同。
这个结尾图很像一个特色纽约时报的文章标题为“最保守的县是获得政府援助最多的国家。”有一些人 Twitter上的讨论关于回归线和其他功能。这导致我自己收集和探索数据( 经济分析局和选举结果托尼麦戈文 )。当我意识到在探索过程中我练习了多少交互方法时,我认为这将成为一个合适的演示数据集。
选择链接
当有多个视图使用相同的数据表时,选择链接意味着在一个视图中突出显示的元素在其他视图中突出显示其对应的元素。在JMP中,选择链接始终处于开启状态,这意味着即使数百万行也必须快速。为实现这一目标,选择将作为每个数据表的核心部分。
LITHIUM.OoyalaPlayer.addVideo('https:\/\/player.ooyala.com\/static\/v4\/production\/', 'lia-vid-91Y3g3aTE6UQB4ZFOYAANeKz_24gCiwgw912h446r59', '91Y3g3aTE6UQB4ZFOYAANeKz_24gCiwg', {"pcode":"ltbGkyOjMl3V3pZ3Trn6T2z1_rjF","playerBrandingId":"ODI0MmQ3NjNhYWVjODliZTgzY2ZkMDdi","width":"912px","height":"446px"});
(在我的视频中查看)
最大的挑战是图元素彼此之间没有一对一的对应关系,例如县级点和示例中的州级形状。对任何图表类型以清晰的方式显示部分选择是一个开放的挑战。对于地图,当其他任何县被选中时,JMP会突出显示整个州的形状。对于按计数大小的图形元素,例如直方图条,JMP将使用部分突出显示来反映部分选择。
行过滤
行过滤是最常见的数据可视化交互类型之一。我们的想法是,可视化仅使用数据表行的子集,基于视觉旁边出现的过滤器的约束。
LITHIUM.OoyalaPlayer.addVideo('https:\/\/player.ooyala.com\/static\/v4\/production\/', 'lia-vid-5iZHg3aTE6SQv6VAfU_xNjFfMCuO01jbw856h406r54', '5iZHg3aTE6SQv6VAfU_xNjFfMCuO01jb', {"pcode":"ltbGkyOjMl3V3pZ3Trn6T2z1_rjF","playerBrandingId":"ODI0MmQ3NjNhYWVjODliZTgzY2ZkMDdi","width":"856px","height":"406px"});
(在我的视频中查看)
我在视频中使用了一个名为“Lock Scales”的选项,用于在过滤时保持轴固定。否则,将针对每个过滤的子集调整它们。
悬停细节
被动类型的交互是将鼠标悬停在图形元素上,并显示一个浮动窗口,其中包含更多详细信息。有时这些被称为“工具提示”,因为它们最初用于工具栏图标。在数据可视化中,悬停细节是一种显示图表变量的更精确值以及其他相关变量的方法。
LITHIUM.OoyalaPlayer.addVideo('https:\/\/player.ooyala.com\/static\/v4\/production\/', 'lia-vid-NoZHg3aTE6ufjR5lBO2jl20LGnTPiryRw944h332r996', 'NoZHg3aTE6ufjR5lBO2jl20LGnTPiryR', {"pcode":"ltbGkyOjMl3V3pZ3Trn6T2z1_rjF","playerBrandingId":"ODI0MmQ3NjNhYWVjODliZTgzY2ZkMDdi","width":"944px","height":"332px"});
(在我的视频中查看)
在示例中,请注意,县名称包含在散点图的悬停详细信息中,即使该变量不在图表中。这是因为数据表中的变量标有一个属性,默认情况下会使其显示在所有悬停详细信息中。
模型调整
模型调整意味着视觉表示随着模型参数的改变而改变。在该示例中,模型是样条平滑器,模型参数是刚度参数lambda。
LITHIUM.OoyalaPlayer.addVideo('https:\/\/player.ooyala.com\/static\/v4\/production\/', 'lia-vid-lwZHg3aTE6Cxjm8c2z_c_96H3HNrYoBKw876h386r363', 'lwZHg3aTE6Cxjm8c2z_c_96H3HNrYoBK', {"pcode":"ltbGkyOjMl3V3pZ3Trn6T2z1_rjF","playerBrandingId":"ODI0MmQ3NjNhYWVjODliZTgzY2ZkMDdi","width":"876px","height":"386px"});
(在我的视频中查看)
虽然许多模型对于这种交互式调整来说太慢了,但计算机的速度足够快,可以比我们经常意识到的更多。这个看起来很简单的模型有很多。有四个单独的平滑器,每个平滑器具有250x自举置信区间,因此每次刚度参数更改时,有1,000个样条模型适合。
审美映射
将美学属性映射到图元素是一种简单但重要的交互。有了美学,例如颜色和线条样式,你经常需要看到它才能知道它的工作原理。
LITHIUM.OoyalaPlayer.addVideo('https:\/\/player.ooyala.com\/static\/v4\/production\/', 'lia-vid-c0ZXg3aTE6a3ZbW4jgVWp0XEhClvYMmcw888h422r936', 'c0ZXg3aTE6a3ZbW4jgVWp0XEhClvYMmc', {"pcode":"ltbGkyOjMl3V3pZ3Trn6T2z1_rjF","playerBrandingId":"ODI0MmQ3NjNhYWVjODliZTgzY2ZkMDdi","width":"888px","height":"422px"});
(在我的视频中查看)
可以通过右键单击更改简单属性,而更复杂的属性(如渐变颜色映射)需要设置对话框,因此具有较小程度的交互性。
列切换
在列切换中,将一个或多个数据列替换为一组中的另一列。这里,Y变量与左侧面板中的列一个一个地替换。
LITHIUM.OoyalaPlayer.addVideo('https:\/\/player.ooyala.com\/static\/v4\/production\/', 'lia-vid-swZ3g3aTE6nqw8PbCMQysv4S0v_x9j8Iw856h386r488', 'swZ3g3aTE6nqw8PbCMQysv4S0v_x9j8I', {"pcode":"ltbGkyOjMl3V3pZ3Trn6T2z1_rjF","playerBrandingId":"ODI0MmQ3NjNhYWVjODliZTgzY2ZkMDdi","width":"856px","height":"386px"});
(在我的视频中查看)
列切换可以是快速通过新数据集的好方法。
卷切片
体积切片是通过绘制一组二维切片来探索多维数据空间的一种方式。该探查在JMP中使用切片来探索多维模型。在这个例子中,我们在Y上对Rep Pct建模,针对三个因素:个人收入,个人转移和投票率,这导致了四维表面。每帧显示一个X上的切片,而其他X保持固定。
LITHIUM.OoyalaPlayer.addVideo('https:\/\/player.ooyala.com\/static\/v4\/production\/', 'lia-vid-4yZ3g3aTE6juUfpYEYjPJuyqCiE3P95ew876h378r96', '4yZ3g3aTE6juUfpYEYjPJuyqCiE3P95e', {"pcode":"ltbGkyOjMl3V3pZ3Trn6T2z1_rjF","playerBrandingId":"ODI0MmQ3NjNhYWVjODliZTgzY2ZkMDdi","width":"876px","height":"378px"});
(在我的视频中查看)
个人转移似乎影响不大(至少在这个片段中它是一条平线),但是当我们与它互动并改变其他帧使用的固定值时,我们看到与个人收入的互动。个人收入有很高的积极斜率,个人转移率很高,而个人转移价值低则有很强的负斜率。
轴缩放
比例定义数据值如何映射到屏幕坐标,并且本身可视化为轴。轴缩放交互是通过直接操纵轴来更改该映射的能力。交互包括平移,拉伸和缩放。
LITHIUM.OoyalaPlayer.addVideo('https:\/\/player.ooyala.com\/static\/v4\/production\/', 'lia-vid-JhZ3g3aTE6fEz1j6iZo-YcS1fqY37RRLw756h406r424', 'JhZ3g3aTE6fEz1j6iZo-YcS1fqY37RRL', {"pcode":"ltbGkyOjMl3V3pZ3Trn6T2z1_rjF","playerBrandingId":"ODI0MmQ3NjNhYWVjODliZTgzY2ZkMDdi","width":"756px","height":"406px"});
(在我的视频中查看)
轴缩放并不总是只是在不同位置重绘元素。请注意,右侧的点图必须调整其新标度的标记闪避布局,并且轴本身有时必须重新计算诸如刻度标记间隔之类的内容。在案例或地理可视化中,根据比例切换投影甚至是有用的。
LITHIUM.OoyalaPlayer.addVideo('https:\/\/player.ooyala.com\/static\/v4\/production\/', 'lia-vid-BxZ3g3aTE6g374JDRrFcRvP3b9lNPY_9w920h426r644', 'BxZ3g3aTE6g374JDRrFcRvP3b9lNPY_9', {"pcode":"ltbGkyOjMl3V3pZ3Trn6T2z1_rjF","playerBrandingId":"ODI0MmQ3NjNhYWVjODliZTgzY2ZkMDdi","width":"920px","height":"426px"});
(在我的视频中查看)
对于JMP,区域规模使用a 阿尔伯斯等面积投影,世界规模使用a Kavrayskiy VII 妥协投射。
更多互动?
鉴于这九种数据可视化交互方法,我们可以更好地考虑更多问题:
- 还有哪些其他通用交互方法在数据可视化中有用?我说的是“一般”方法,因为我认为对于特定类型的图表,专业交互的数量没有限制。例如,JMP有一种交互式更改直方图bin大小的方法,我在这里没有将其作为一般方法。
- 是否应将其中一些方法拆分为多种方法?也许数据探索与模型探索的体积切片不同。我正在考虑将交互式图形调整大小作为一种轴缩放,但也许值得拥有自己的类别。
- 是否应将这些方法中的某些方法组合为同一方法的变体?行过滤和列切换可能是较大的子集交互的两种变体。
- 这些方法有更好的名称,无论是预先存在的还是新的?其中一些名称来自JMP术语,有些是我自己的讨论发明。
- 是否应该识别每种方法的不同级别?例如,我们是否应该区分使用或不使用实时预览的图形构建。
我希望能够在这里,在JSM或Twitter上听到有关这些问题和其他问题的反馈。