Andrienko Task Framework | Elementary tasks & Synoptic tasks | Munzner Nested Model
Andrienko Task Framework | Elementary tasks & Synoptic tasks | Munzner Nested Model
- 关系的定义 关系在数学和逻辑上表示一种映射或关联,将一个集合中的元素(输入)与另一个集合中的元素(输出)进行匹配。在这里:
- 买入时的价格(在 R 集合中)和 卖出时的价格(在 C 集合中)之间存在一个关系。
- 这个关系是“卖出价格是买入价格的三倍”。
- 为什么是单一关系?
- 买入和卖出股票的时间点虽然看起来是两个点,但它们由一个条件联系在一起: 卖出价格 = 3 × 买入价格。
- 这个条件将买入价格和卖出价格之间建立了一个唯一的映射关系,因此我们可以将它看成是单一关系,而不是两个独立的关系。
- 任务简化为寻找满足条件的关系 在左图的任务中:
- 输入(R):所有可能的买入时间点(价格)。
- 输出(C):所有可能的卖出时间点(价格)。
- 关系(f):卖出价格=3×买入价格\text{卖出价格} = 3 \times \text{买入价格}卖出价格=3×买入价格。 我们只需要在这两个集合中找到满足这个关系的组合(买入和卖出的时间点),这就把问题简化为单一的关系寻求任务。
右图的对比:为什么是两个关系?
- 在右图中,条件变成了“价格在两天内增长了 10%”。
- 这里涉及两个关系:
- 第一天的价格(S¹)和第二天的价格(S²)的关联。
- 第二天的价格与第一天的价格之间满足 S2=1.1×S1S² = 1.1 \times S¹S2=1.1×S1。
- 因为有两个条件(两个时间点与 10% 增长的关联),所以任务需要两个关系来描述。
结论
对于左图而言,买入和卖出苹果股票的时机虽然涉及两个时间点,但因为它们由单一条件联系起来(卖出价格是买入价格的三倍),所以可以看作是一个关系。右图之所以有两个关系,是因为它涉及更复杂的条件(两个时间点 + 10% 增长的关联)。
基本任务(Elementary tasks)与整体性任务(Synoptic tasks)之间的对比
1. 查找任务(Lookup)
- 基本查找(Elementary lookup): 问题:在某个特定日期,苹果股票的价格是多少?
- 简单任务:关注单个时间点的信息。
- 整体查找(Synoptic lookup): 问题:在某个时间段内,苹果股票价格的趋势是什么?
- 复杂任务:分析一个时间段内的整体模式或趋势。
2. 反向查找任务(Inverse lookup)
- 基本反向查找(Elementary inverse lookup): 问题:对于给定的苹果股票价格,在哪个日期达到了这个价格?
- 简单任务:从价格反推时间点。
- 整体反向查找(Synoptic inverse lookup): 问题:在哪些时间段内,苹果股票价格增长了 300%?
- 复杂任务:分析整个时间段,寻找符合特定条件(如 300% 增长)的模式。
3. 比较任务(Comparison)
- 基本比较(Elementary comparison): 问题:交易周的开始和结束时的股票价格有什么不同?
- 简单任务:对比两个具体时间点的股票价格。
- 整体比较(Synoptic comparison): 问题:在一周内,股票价格上升与下降哪个更常见?
- 复杂任务:在更大范围内进行模式或频率的比较。
4. 反向比较任务(Inverse comparison)
- 基本反向比较(Elementary inverse comparison): 问题:股票价格从 100 美元上涨到 200 美元经历了多长时间?
- 简单任务:找到满足某个条件的时间间隔。
- 整体反向比较(Synoptic inverse comparison): 问题:股票价格增长的时期与价格下跌的时期之间有什么关系?
- 复杂任务:分析整个时间序列中增长与下跌的模式或周期。
总结
这张图的核心思想是展示任务的复杂性层次:
- 基本任务:关注单个点或简单条件,如单个日期、价格、或直接比较。
- 整体任务:分析时间段内的模式、趋势、频率或复杂关系,属于更高层次的数据分析。
四层嵌套模型(Nested Model)
1. Domain Problem Characterization (领域问题描述)
目标:明确需要解决的领域问题。
内容:
- 确定问题的上下文,包括领域的背景、用户的目标以及具体的分析任务。
- 定义问题的关键需求和限制条件。
挑战:
- 理解和提取领域专家的需求。
- 确保设计的目标是为了解决实际问题,而不是为了技术展示。
常见问题:
- 对领域任务的需求理解不清晰。
- 偏离实际任务。
2. Data/Operation Abstraction (数据与操作抽象)
目标:将领域问题转化为抽象的数据类型和操作。
内容:
- 确定数据类型(例如,表格、网络、层次结构等)和属性(例如定量、定性、时间、空间等)。
- 定义用户的操作任务,例如筛选、排序、导航或聚合数据。
关键问题:
- 将领域特定需求映射为通用的数据表示和操作形式。
- 确保这些抽象能够涵盖领域任务。
3. Visual Encoding and Interaction Design (可视编码与交互设计)
目标:通过选择合适的可视编码和交互方式,使抽象的数据和任务直观可见。
内容:
- 决定如何映射数据到视觉通道(例如颜色、位置、形状等)。
- 设计交互方式(如缩放、过滤、动态视图)。
关键设计原则:
- 符合感知和认知规律(如颜色映射清晰、减少视觉干扰)。
- 使用合适的视觉通道传递信息。
常见问题:
- 选择了低效的视觉编码。
- 未能充分利用交互设计来支持用户探索数据。
4. Algorithm Design (算法设计)
目标:实现高效的计算和渲染以支持设计。
内容:
- 开发或选择适合的算法来处理数据操作或渲染任务。
- 确保系统性能满足用户需求(如实时交互或大数据支持)。
挑战:
- 平衡算法的复杂性与可视化的性能。
- 确保算法的精确性和鲁棒性。
常见问题:
- 算法效率不足导致系统无法实时响应。
- 算法设计与更高层设计不一致。
框架的优点
- 系统性:将设计和评价分层,提供清晰的结构指导。
- 问题定位:每一层次都有特定目标和方法,便于发现设计中的问题。
- 通用性:可以应用于各种类型的可视化任务和数据类型。
- 支持迭代设计:提供了一种自上而下设计和自下而上反馈的过程,支持不断改进。
如何应用 Munzner Framework
设计阶段 :
- 从领域问题开始,逐步向下抽象到数据和操作,最后到可视化设计和算法实现。
- 确保每一层次都服务于上层目标。
评价阶段:
- 逐层分析可视化系统的问题来源。
- 使用用户反馈和性能测试来优化各层次的设计。
This post is licensed under CC BY 4.0 by the author.