【论文阅读】-- Temporal Summary Images:通过交互式注释生成和放置实现叙事可视化的方法

在这里插入图片描述

Temporal Summary Images: An Approach to Narrative Visualization via Interactive Annotation Generation and Placement

    • 摘要
    • 1 引言
    • 2 背景及相关工作
      • 2.1 叙事可视化和讲故事
      • 2.2 显示面向时间的数据
      • 2.3 小倍数和漫画
      • 2.4 注释可视化
    • 3 设计要求和工作流程
      • 3.1 工作流程
      • 3.2 TSI 示例:1830-2010 年美国移民
    • 4 时间布局和数据快照
      • 4.1 时间布局
      • 4.2 数据快照
    • 5 注释
      • 5.1 数据兴趣点(POI)
        • 5.1.1 POI 类型
        • 5.1.2 手动查询和添加POI
      • 5.2 自动创建注释
        • 5.2.1 数据属性评分
        • 5.2.2 确定 POI 分数
      • 5.3 注释放置
        • 5.3.1 Top-n排名放置算法
        • 5.3.2 基于密度的放置算法
    • 6 实施与评估
      • 6.1 评估
        • 6.1.1 案例一:EpiSimS 仿真
        • 6.1.2 案例二:千年宇宙学模拟
    • 7 讨论
      • 7.1 TSI 框架的优点
      • 7.2 自动评分数据属性
      • 7.3 更深入、更广泛地研究快照注释
      • 7.4 当前设计的限制
    • 8 结论
    • 致谢
    • 参考文献


期刊: IEEE Trans. Vis. Comput. Graph.(发表日期: 2017
作者: Chris Bryan; Kwan-Liu Ma; Jonathan Woodring

在这里插入图片描述

摘要

可视化是一种用于分析和交流复杂、多维和时变数据的强大技术。然而,由于可视化属性的数量、各种显着特征以及解释兴趣点 (POI) 所需的意识,在图表或图形中手动合成连贯的叙述可能很困难。我们提出时间摘要图像(TSI)作为探索这些数据并从中创建故事的方法。作为一种可视化,TSI 由三个常见组件组成:(1) 时间布局、(2) 漫画风格的数据快照和 (3) 文本注释。为了增强用户分析和探索,我们开发了许多交互式技术来推荐相关的数据特征和设计选择,包括自动注释工作流程。随着分析和视觉设计过程的融合,生成的图像变得适合用数据讲述故事。为了进行验证,我们使用 TSI 的原型实现来利用大规模科学模拟数据集进行两个案例研究。

关键词:叙事可视化、讲故事、注释、漫画可视化、时变数据。

1 引言

对于那些经常需要从数据集中分析和提取基本信息,然后与其他人交流发现的人来说,可视化可以用作探索性和解释性工具。尽管已经开发了许多视觉分析方法,但对创建叙事可视化的支持较少。特别是,随着数据变得庞大、复杂、多维,有时甚至是异构的,手动筛选、识别和突出显示图表或图形的基本方面就成为一项艰巨的任务。如果在探索和分析的过程中,可视化系统建议选择和标记重要的区域和特征,以便导出在后续任务或演示中使用的数据故事,那将是令人期望的。

为了帮助解决这个问题,我们提出了时间摘要图像(TSIs),这是一个用于创建多元时变数据集的叙事可视化的框架。从视觉上看,TSI 由三个常见组件组成:(1) 时间布局视图,例如折线图或故事情节,(2) 在相关时间步附加的数据快照,以及 (3) 锚定文本注释。图 1 显示了一个 TSI 示例。它简洁地讲述了一个关于美国移民的故事,使用堆叠图作为时间布局,五张地图作为数据快照集,以及六个描述性注释。

本文的重点不仅仅是 TSI 设计师可以制作的最终确定的“演示风格”图像。相反,我们强调分析和设计过程的融合。为了增强探索,我们贡献了许多交互式“幕后”技术。它们通过执行两项任务来协助数据交互和可视化创建:(1) 选择数据快照的相关时间步长;(2) 提供用户循环的自动注释工作流程,以推荐数据兴趣点 (POI)展示。本文的大部分内容都集中在这种新颖的注释支持上,它会自动创建、评分、排名并将数据驱动的注释附加到显示器上。在分析过程中,它们会提醒用户注意显着的视觉区域和重要的数据特征。如果需要,可以保存推荐的注释,并随后在将 TSI 呈现给一般受众时用于传达有关数据的关键数据观察结果。

此外,随着整个探索和构建过程的发生,设计人员会搜索、过滤和编辑要显示的数据,同时调整其整体视觉外观。当这两项任务综合在一起时,就会有效地出现一个统一的汇总数据故事,强调基础数据集的重要方面和趋势。根据作者的目的,进一步风格化组件会产生适合演示或公开展示的图像。

我们基于本文描述的框架和技术创建了一个原型 TSI 应用程序。为了进行验证,我们使用大规模科学模拟数据集(分别是疾病模型和宇宙学模型)进行了两个案例研究。根据领域参与者的反馈,我们的方法对于分析和总结数据集都是有效的。

2 背景及相关工作

相关的先前工作分为两大类:(1)叙事可视化和讲故事作为数据交流的方法,以及(2)TSI 的三个特定视觉组成部分:时变技术、小倍数(也称为漫画)和注释。

2.1 叙事可视化和讲故事

Segel 和 Heer 在 [35] 中对叙事可视化进行了分类和评论。他们为此描述了七种特定类型,包括带注释的图表/图表和漫画可视化。可以通过优先考虑数据的特定解释或感知来构建叙事可视化来讲述数据故事[19]。

数据讲故事的概念本身已在 InfoVis、SciVis 和商业社区中得到强调 [15,23,25,28]。这里的重点是如何利用电影、文学和戏剧叙事惯例来调整可视化效果,以便与广大受众进行交流。在[26]中,Lee 等人。主张明确定义数据故事的范围,并提出基于以下任务的视觉故事讲述的三步流程:(1)找到见解,(2)创建一个故事,(3)讲述故事。我们将 TSI 流程重点关注前两点:探索数据和创建演示质量的可视化。

在更广泛的通信可视化设计背景下,Moere 和 Leuven 在 [32] 中认为,美学构成了可视化的第三个重要约束(除了合理性和实用性之外)。最近的论文重点关注创建信息图表或演示风格可视化的工作流程方面 [7,34,39,46],尽管大多数论文需要完全手动设计,而不考虑分析任务。虽然某些工具结合了这两个目标 [16, 36],但它们的设计是针对 TSI 框架所解决的一组不同的任务。

2.2 显示面向时间的数据

TSI 中最大的视觉组件是用于显示时变数据的时间布局。选择的布局取决于作者的判断力;我们在当前框架中讨论的四个选项是用于纯数字数据的折线图和流图[10],以及用于基于流的分类数据的故事情节[40]和冲积图[33]。虽然这些是众所周知的传统技术(我们因此选择它们),但还有更多潜在的方法来显示随时间变化的数据 [5],这些方法是根据特定数据集或美学设计的。

除了简单的视觉绘图之外,多组件系统还可以通过链接的显示或附加的视觉组件来增强时间视图,通常是为了实现数据分析。例如,STAC [42] 和 PieceStack [43] 系统专注于堆叠图的分析。 ChronoLenses [44] 是一个基于透镜的折线图数据转换管道。 SemanticTimeZoom 系统 [6] 通过在图表中结合定性和定量视觉效果来支持数据分析。这些技术支持与底层数据的详细交互和理解,但这样做的代价是必须专注于特定的视觉布局(即仅流图),并且不考虑数据故事讲述或呈现。相比之下,TSI 可以显示多种类型的时间视图,并使用文本注释作为传达定性数据观察的方式,而不需要 TSI 作者/查看者进行培训来解释其含义。

2.3 小倍数和漫画

小倍数使用一组离散数据增量的视图(或框架)来显示一个或多个维度的变化[41]。当这种变化倾向于遵循严格的线性数据路径(即使涉及缩放和过滤)时,该技术可以被定义为叙事可视化的漫画风格[35]。

之前的工作使用漫画可视化作为总结或呈现数据的方式[12,45,46]。相反,VizPattern 系统使用漫画作为创建可视化查询的界面,以生成数据图表[21]。最近一篇名为 Graph Comics [7] 的论文使用漫画来总结网络随时间的变化。通过附加文本标题、标签和注释来突出显示时态数据演变的特定方面,从而对框架进行风格化。然而,所有的设计和构建都是由系统用户手动执行的。

TSI 数据快照组件采用漫画技术。为了帮助选择要显示的快照,我们提出了三种时间步长选择算法,请参见第 4.2 节。这类似于一些先前的系统(例如[45]),因为时间步长是使用距离和聚类启发式选择的。 TSI 作者选择所需的时间步长选择技术和所需的数据属性来进行分段,并且可以手动调整结果或选择不同的算法,直到找到可接受的结果。

2.4 注释可视化

对显着特征的感知理解对于图形和图表的理解很重要[18]。基于文本的注释通过“以图形方式将”观看者的注意力指向感兴趣的区域来帮助这一过程,并且可用于提出结论并提供数据上下文[35]。

在[20]中,作者定义了专门将可视化数据引用为观察数据的注释,而附加注释提供了视图本身中未显示的额外信息。通过草图创建的注释被定义为自由格式,在异步、协作环境和新闻/信息图表设计中尤其重要 [11, 17]。或者,通过查询底层数据集并引用视觉布局来生成和放置数据驱动的注释 [20, 22]。

自动创建的数据驱动注释尝试识别和标记数据集/可视化最有趣的功能或整体主题。 Google Drive 最近为其电子表格应用程序推出了“语言化”[1],该应用程序创建带有描述性标题的数据图表。在[22]中,Kandogan 引入了一个系统来注释基于点的数据可视化中的集群、异常值和趋势。 Kong 和 Agrawala 在 [24] 中创建了一种观察注释方法,该方法可以标记已创建的图表的特征和维度,而不引用底层的原始数据值。

与本文特别相关的工作是 Hullman 等人的工作。 [20]。他们通过将价格极值与从数据库中检索到的时间相关的新闻报道相匹配来注释股票市场的时间线。这使他们能够创建上下文感知的附加注释。 [14]中使用了类似的方法来注释地理地图。相比之下,TSI 框架可以创建附加和观察类型的注释,重点是放置。注释还可以应用于不同类型的时变视觉技术(不仅仅是折线图)。

3 设计要求和工作流程

TSI 的动机来自与 EpiSimS 疾病模拟团队的讨论(案例研究请参见第 6.1.1 节)。该小组的成员虽然精通流行病研究,但不是可视化专家,并且在使用复杂的视觉分析和设计工具方面经验有限。根据他们通常的分析需求以及创建图像供审核所采取的步骤,我们为团队定义了以下一组特定任务:

T1 沿时空维度的结果。 EpiSimS 仿真输出数据有两个主要维度轴。 (1) 疾病传播发生在流行病增长、高峰和衰退的一段时间内。 (2) 这种传播发生在一个地理区域内,通常最初通过热点,然后完全扩散。

T2 通过查询特征进行数据分析。 EpiSimS 科学家对其领域数据非常熟悉,这指导了他们的探索。他们的主要重点是了解模拟输入参数和缓解策略如何影响特定兴趣点 (POI) 的流行病生命周期行为,例如疫情爆发的高峰或其在人口统计中的分布。这是通过 SQL 或基于表的电子表格函数查询基础数据集来完成的。

T3 使用传统工具进行演示。为了向合作者或一般受众(例如在会议或论文中)展示结果,需要使用静态图(折线图、地图等),这些图是通过 R 或 Python 的 matplotlib 库等工具创建的。使用图像编辑软件将它们组合起来并添加标题。

尽管这些任务是 EpiSimS 团队特有的,但它们很容易被推广。从广义上讲,研究人员和图表设计者可能首先希望快速查看、分析和探索他们的数据以获取相关特征或 POI。然后,他们用一组视觉元素总结结果以进行演示或讲故事。与在没有指导的情况下手动执行这些任务相反,TSI 框架将它们组合到单个工作流程中,并提供增强分析和图像构建过程的技术。为了正式证明本文其余部分讨论的设计组件和交互技术的合理性,我们首先定义 TSI 框架应遵循的一组准则:

DG1 Temporal-plus 数据视图。数据集应该在(至少)两个主要维度轴上可视化:时变域加上一个或多个“其他”维度。从 EpiSimS 特定任务的概括中,空间域被抽象出来;现在它只需要与时间轴正交。

DG2 突出显示重要元素。应突出显示重要的数据集特征和 POI,以首先引起创建 TSI 的作者的注意,然后引起观察完整 TSI 的查看者的注意。

DG3 简洁的演示视图。完整或“构建”的 TSI 应适合作为单个、相互连接的静态图形进行数据呈现或讲故事。在创建过程中,这意味着强调根据作者的喜好设计和配置 TSI 的图形组件,然后将图像导出为适合显示的格式。在可视化理论的背景下,这表明可以使用传统的或广泛理解的视觉技术,因为它们更容易被普通观众理解。

选择了三个视觉组件来满足这些要求。对于 DG1,作者选择的时间布局显示随时间变化的数据视图。考虑到 DG3,我们使用传统的时变技术。一组或多组漫画数据快照显示了“其他”正交维度。使用漫画(相对于动画或类似技术)的原因是 DG3 的静态图像方面。为了确保组件链接在一起(形成单个、连接的整体图像),快照会沿着相应时间步长的轨道附加在时间布局上方。为了帮助 TSI 作者选择要显示的“最佳”快照,我们贡献了一组自动时间步长选择技术。

为了解决 DG2,我们使用文本注释对时间布局上的重要元素进行图形指向。数据驱动的注释会自动创建并附加到新颖的工作流程中的显示中;它们作为 TSI 设计师的一种引导探索形式,提醒他/她重要的数据特征或视图中的显着区域。熟悉数据后,作者可以快速与创建的注释列表进行交互,以搜索相关属性、极值和 POI,或者手动查询数据以创建新注释。为了在内置 TSI 中向查看者传达关键观察结果,可以固定并保存选定的注释。通过这种方式,注释工作流程具有双重目的:丰富作者的分析和探索,以及向观众传达发现。由于注释是基于文本的,因此它们比更抽象的视觉技术(例如[6])具有优势,不需要解释培训,因为相关的 POI 或特征是由注释的文本明确描述的。

3.1 工作流程

除了简单地定义一组视觉组件之外,设计指南还暗示必须有一个 TSI 探索和图像构建的过程。我们在图 2 中展示了此工作流程,其中记录了 TSI 作者执行的具体步骤和交互。
在这里插入图片描述

用户首先加载一组文件。在我们的实现中,除了原始数据之外,这些还可以包括配置选项,例如时间布局、调色板和预先保存的注释的选择。这将通过创建时间布局、根据默认(或用户指定的)时间步长选择选项选择一组数据快照以及加载任何已保存的注释来生成 TSI 的初始视图。

用户现在可以执行许多交互。可以通过选择一组不同的时间步长(为时间步选择选择新的启发式、更改要显示的数字等)或将它们沿着轨道拖动到不同的时间步来编辑数据快照。还可以加载第二组数据快照并将其附加到第一组数据快照之上(参见图 10)。

关于注释,作者可以选择对他/她重要的属性和POI类型,并启动自动注释工作流程。这将创建一组数据驱动的注释,并尝试根据相关性排名将最重要的注释放置在显示上。我们贡献了两种注释放置算法。注释可以单独进行交互:拖动、编辑、删除和过滤,或者用户可以编辑基础属性/POI 分数以批量重新排序、过滤、选择注释并将其放置在显示上。

除此之外,我们的系统还提供了手动数据查询(通过 SQL)和注释创建的接口。我们还让设计师对视觉组件进行风格化和调整:设置颜色、字体样式、编辑默认文本和标签、调整组件大小等。当作者对视觉输出感到满意时,他/她可以将完成的 TSI 导出或保存为图像文件或保存其当前状态以供以后重用。导出的 TSI 旨在作为数据集的汇总,因为它包括沿重要维度轴的视图(通过时间布局和数据快照)。保存的注释集可帮助向 TSI 观众讲述趋势或亮点。

3.2 TSI 示例:1830-2010 年美国移民

我们通过示例用例说明了构建的 TSI,如图 1 所示。该 TSI 讲述了 1830 年至 2010 年美国移民趋势的故事(数据来自 [3, 4])。时间布局显示了每个十年基于原籍国(或地区)的移民百分比。每个时间步长总计为 100%,这是通过使用堆叠图直观地传达的。爱尔兰、俄罗斯和墨西哥的图层已用明亮的颜色突出显示。在此之上,数据快照是地图;每个州根据其主要移民人口进行颜色划分。
在这里插入图片描述

堆叠图和地图快照的结合显示移民在两个方面发生了巨大的演变:人们来自的国家和他们要移居的国家。为了强调爱尔兰和墨西哥的趋势相互镜像,选定的注释用有趣的文本描述了这两个数据层。它们吸引了观众的注意力:爱尔兰移民曾经几乎占美国移民总数的一半,但目前已减少到只有一小部分。与此同时,墨西哥移民却走向了相反的方向。

4 时间布局和数据快照

现在,我们对 TSI 的前两个可视化组件进行高级概述:时间布局和数据快照。

4.1 时间布局

时间布局显示数据随时间变化的视图;它位于中央并从左到右水平定向。这里可视化的选择取决于 TSI 作者的判断力,因此应该仔细考虑。对于独立的数字时间序列(例如股票价格),折线图是一个简单的选择。如果显示时间数据大小是一个重要的考虑因素,例如在移民示例中(图 1),则可以使用流图。对于分类或流数据,应使用故事情节或冲积图等技术。

我们当前的实现使用这四种技术作为时间布局的选项。由于它们是众所周知的传统技术,因此在向普通观众演示时应该是有效的。然而,从理论上讲,任何与时间相关的可视化技术都可以用于该组件,尽管更复杂或抽象的视图会引入潜在的解释问题。

4.2 数据快照

数据快照是一组视觉框架的漫画,显示与时间布局正交的数据集视图。在移民示例中,这是数据的制图视图。快照附加到时间布局上方的轨道,其位置与其关联的时间步长相对应。它们旨在提供对数据集时间演变的额外见解,并帮助提供数据的整体摘要。与时间布局一样,帧中使用的可视化技术的选择由作者决定。我们当前的 TSI 原型将数据快照存储为图像文件集;检索相关的内容并将其附加到显示中。在案例研究(第 6.1 节)中,使用了空间和体积渲染,但根据上下文,更抽象或投影映射可能更合适。这些可以包括散点图、条形图、热图、视频剧照和其他降维技术。

显示的数据快照集取决于一组选定的时间步长。为了帮助 TSI 作者选择合适的快照,我们提供了三种自动时间步长选择技术:模时间步长索引、熵阈值选择和分层分段。要使用其中之一,用户首先在数据集中选择一个或多个时间属性。启发式应用于属性集并返回一组时间步长。图 3 显示了这些技术如何为示例属性选择时间步长:折线图中的数值数据向量。对于每个选定的时间步长,都会检索相关快照图像并将其附加到 TSI。
在这里插入图片描述
模时间步长索引 这是模拟中采用的典型时间步长选择过程,其中数据定期保存;即,每 m 个步骤选择一个快照。这将返回具有恒定步长的线性离散数据快照选择。

熵阈值 熵是在每个连续时间步长(或时间步长集)之间计算的。当总体熵超过定义的限制时,选择该时间步长。该技术强调基于大规模数据变化的时间步长选择,而不是一般平坦或稳定的数据。

分层分段 计算每个时间步的增量(变化)。将分层聚类应用于增量以在所有时间步上生成分层分段,然后对要返回的所需分段数量进行切割。根据所需的统计指标(例如平均增量值或标准差)为每个片段选择“代表性”时间步长。我们目前使用平均增量值来确定这一点。

我们在这里注意到这三种技术都是基于数据抽象的;也就是说,快照选择不链接到所选的时间布局技术或当前显示的注释集。这样做的原因是,作者可能会根据与这些组件无关(独立)的属性来选择快照时间步长。使用的数据属性可能不会显示在时间布局中,并且仅包含在专门用于快照选择的数据集中。

加载后,可以根据设计者的偏好以交互方式拖动、删除或重置附加的快照。如果启发式给出的结果不足,则可以尝试另一个启发式,或者可以完全手动选择时间步长。

5 注释

注释直观地指向显着的数据特征和/或元素。它们是 TSI 的第三个组成部分,覆盖并锚定到时间布局上。

TSI 框架的一个主要方面是其自动注释支持的工作流程,如图 4 所示。本节介绍此工作流程。我们首先解释什么是数据 POI 以及如何利用它们来创建注释。创建后,将对注释进行评分和排名。在展示之前,它们必须正确定位。这需要过滤并仅选择排名最高且相关的注释,为此我们引入了两种放置算法。与系统交互(例如缩放、平移、删除不需要的注释或更新属性的分数)会触发注释工作流程中的先前步骤,强制注释重新排名,并可能导致显示新注释并删除旧注释。这形成了一个用户循环,可以审查排名注释并用于指导分析和探索。所需的注释可以固定在显示屏上,以解释相关结果或突出显示数据的各个方面。
在这里插入图片描述

5.1 数据兴趣点(POI)

注释描述了底层数据集的一个方面,我们将其称为兴趣点 (POI)。相反,POI 可以使用单个注释来描述。 POI 是数据属性的特性,例如值极值或变化、开始和停止、分类、状态或流变化、稳定区域等。尽管单个 POI 可以应用于数据属性的多个元素(例如,平坦区域可能跨越多个时间步长),但它仍然指的是数据的单个特征。因此,我们仅使用术语 POI 而不是 ROI(感兴趣区域)进行描述。

如第 2.4 节所述,注释可以是附加的,也可以是观察性的,具体取决于它们是否引用可视化数据或向视图添加附加信息。我们的系统允许手动创建附加注释或针对时间布局中未显示的背景数据属性进行查询;它们还可以加载到用于构建 TSI 的初始数据集中。

5.1.1 POI 类型

图 5 显示了可从三种类型的数据属性中提取的观测 POI 的示例:数值向量、故事情节和冲积图。每个显示的 POI 对应一个注释。
在这里插入图片描述

数值向量 POI 时间序列可以使用折线图(如图 5a 所示)或堆积图来显示。用于显示图表中每条线(或堆积图层)的数据是独立的数字数组(也称为数值向量)。通过检查向量的值特征,可以提取数值 POI:数字的第一个和最后一个实例、最小值和最大值、平坦区域和斜率变化(在一组时间步长上增加和减少)。

故事情节 POI 图 5b 显示了故事情节中 POI 的示例。特定于线路的 POI 是分类的,因为它们描述了一条线路(或一组线路)的当前状态。例如,线路 L1 从 A 组的步骤 1 开始,在步骤 5 更改为 B 组,并在步骤 6 结束。或者,数字 POI 描述线路进入和离开的组。 A 组从步骤 1 开始,大小为 2(包含两条线),在步骤 2 和 3 处最多为 3,依此类推。因此,A 组的数值大小向量将为 [2, 3, 3, 1, null, null]。

冲积图 POI 图 5c 标注了冲积图中的示例 POI,这些示例显示了组之间随时间变化的数据流。通过将流的一部分分离并转到另一个组,或者通过将来自另一个组的流合并到当前流中,可以改变流的大小。这些 POI 表明该群组的规模已发生变化。它们都是数字的和分类的,因为流量会改变数值量,并且流量所经过的组在质量上是不同的。当步骤之间的流量恒定时,它要么处于稳定区域(即,不会分裂或合并到其他组),要么因为整个流量会一起更改组。还可以提取基于组大小的数字 POI,就像对故事情节组所做的那样。

来自组合属性的 POI 对于每个示例可视化,我们注意到可以从“组合属性”中提取 POI。组合属性是两个或多个数据属性通过逻辑运算符组合在一起的情况。在故事情节示例中,组[B AND C]的最大大小在步骤5处为3。行[L1 AND L3]首先在步骤5处进入组B; line [L1 OR L3] 在步骤 4 中执行此操作。行还可以与组组合以形成组合属性,例如,当行 L1 属于组 A 的一部分时,行 [L1 AND A] 是行 L1 的子集。

5.1.2 手动查询和添加POI

由于数据属性是数值向量或分类向量,因此可以以允许 SQL 查询的方式存储它们。我们的 TSI 实现使用 HSQLDB 缓存 [2] 存储数据属性,并包含一个查询接口。这允许搜索未自动提取的更复杂的 POI,以及访问时间显示中未显示的背景数据属性。在宇宙学案例研究(第 6.1.2 节)中,一位参与者在他的数据集中指出,他将使用此功能来识别数据属性为其最大值的 50% 的时间步长。运行查询时,它会根据其应用的时间步长和属性创建单个注释。

如果手动查询仅引用背景数据,则会创建附加注释。这种类型的注释锚定到它所引用的时间步长。附加注释也可以在 TSI 初始化时加载,并用于引用超出直接数据集范围的“外部”或上下文信息。有关示例,请参阅附录。

5.2 自动创建注释

在图 4 中,注释工作流程的第一步是“创建注释”。只需解析每个数据属性(和组合属性)并识别其 POI,即可完成一次。每个 POI 都会创建一个注释。然而,存在一个问题,即这会生成大量注释。可能数量太多,无法简单地附加到 TSI。我们的解决方案只是显示最相关或最重要的内容。

为了确定哪些注释是“重要的”,我们使用每个创建的注释都有一个分数的概念,以单个数值表示。不仅如此,POI 和数据属性都有自己的分数。为了计算注释的总体分数,将其相关属性和 POI 的分数相乘:

s c o r e a n n o t a t i o n = s c o r e a t t r i b u t e ⋅ s c o r e P O I score_{annotation}=score_{attribute}\cdot score_{POI} scoreannotation=scoreattributescorePOI

这样,每个注释都有自己的分数。一旦对创建的全套注释进行评分,就可以将它们简单地排序到列表中。排名最高的注释被认为是最重要的。 (我们给予手动查询和加载的附加注释尽可能高的分数/排名,因为它们被认为对用户来说是重要的,因为它们是手动创建/加载的。)

作为对两个自动注释进行评分和排名的示例,请考虑得分为 50 (scoreA = 50) 的数据属性 A 和得分为 25 (scoreB = 25) 的属性 B。表示属性全局最大值的 POI 得分为 10 (scoremax=10)。有了这些值,表示 A 最大值的注释的分数将为 500,而 B 的分数将为 250。排名按总体分数进行,因此注释 MaxA 将排在 MaxB 之上。

在显示之前,对排名的注释列表进行过滤。一些注释被丢弃,因为它们当前无法显示在视图上。如果用户放大了部分显示,则无法显示当前窗口之外的注释。或者,应用的过滤器可以隐藏某些 POI 类型而不显示。当注释作为显示候选被删除时,列表中排名较低的注释会向上移动。根据剩余列表选择注释并将其放置在时间布局上。然而,首先,我们讨论如何确定自动注释分数。

5.2.1 数据属性评分

我们实施的系统包括一个界面,用户可以在其中设置数据属性和 POI 类型的分数。可以通过组合两个当前选定的属性在此对话框中创建组合属性。属性分数还可以保存到配置文件中,以便在加载时应用,然后根据需要进行调整。虽然我们当前的系统仅支持手动属性评分,但可以自动导出属性分数并根据数据集属性创建组合属性。对此的讨论请参见第 7.2 节。

5.2.2 确定 POI 分数

与数据属性一样,POI 类型可以由用户手动评分。在第 5.2 节开头的评分示例中,POI 类型“最大”的得分为 10(scoremax = 10)。该 POI 被视为“全局”,因为每个属性只有一个最大值。 (即使最大值发生在多个时间步上也是如此。值是相同的。)全局 POI 包括“最大值”、“最小值”、“第一个”和“最后一个”等特征。

但是,局部最大值又如何呢?对于数字属性,这些可能会出现多次;每个实例都是一个 POI。直观上,较小的极值应该比较大的极值给予较小的权重,并且它们的特定 POI 和后续注释分数应该较低。一些时间序列压缩算法使用这种假设来对极值进行加权。使用距离函数(例如其他极值之间的绝对距离)确定局部极值权重;然后从压缩线上丢弃非常低权重的点。为了对本地 POI 进行加权,我们使用[13]中压缩算法的修改版本,该算法已扩展到对斜坡和平坦区域进行加权(其中较大的斜坡和平坦区域具有更高的权重)。

为了将本地 POI 权重转换为 POI 分数,我们对该属性的本地 POI 权重的整体集合进行归一化。例如,如果局部最大值的 POI 分数设置为 5 (scorelocal max = 5),并且某个属性具有三个压缩权重分别为 28、120 和 200 的局部最大值,则相应的 POI 分数为 0.7、3 和 5 。

本地 POI 也存在于分类数据属性中。作为故事情节中本地 POI 的示例,首先考虑一条线可以在组内停留多个时间步长。在图 5b 中,线路 L1 在步骤 5 处从组 A 转到 B,即“组变更”POI。其权重基于 L1 在离开之前在 A 组中停留的时间;时间越长意味着重量越高。冲积图 POI 可以进行类似的加权,只不过权重还必须根据 POI 相关时间步长的组整体流量进行缩放。

5.3 注释放置

创建注释、评分、过滤和排名后,可以将它们放置到时间布局上。根据注释的类型(无论是附加注释还是观察注释),可以通过五种方式将其锚定到视图(图 6)。这些由注释映射到的时间步长和属性以及时间布局的选择决定。观察注释可以映射到单个 (x,y) 点、固定在一个方向但在另一个方向上具有一系列位置的点,或者在两个维度上都有一定范围的点。附加注释直接引用一个时间步长(或一组时间步长)。
在这里插入图片描述

为了确定注释如何在时间布局上定位,我们提供了两种放置算法(附录中提供了伪代码)。第一种称为 top-n 排名放置算法,仅根据排名选择要显示的注释。如果用户只关心查看得分最高的注释(也许将他/她的分析集中在特定属性或 POI 类型上),则该算法通过始终将它们附加到显示来很好地发挥作用。

第二种算法称为基于密度的放置算法,旨在在显示器上分布注释,同时防止显示器变得混乱。它通过在时间布局上方应用权重字段并使用贪婪放置策略来尝试放置注释来实现此目的。先前放置的注释会对字段施加权重,因此如果排名较低的注释低于其可能锚点的阈值,则可能无法放置它们。

5.3.1 Top-n排名放置算法

该算法将注释的排序列表和数字 n 作为输入。它在第 n 个位置进行剪切,然后将剩余的注释集放置在最“突出的位置”。

注释最突出的位置由以下逻辑确定:对于仅映射到时间步的附加注释,注释锚定在该时间步的 x 位置以及时间布局顶部和视图窗口顶部之间的中间位置。如果注释映射到单个 (x,y) 位置,则使用该点。如果它映射到多个时间步长,则选择中间的时间步长作为 x 位置。确定 y 点取决于注释映射到的数据属性。如果是单条线(例如折线图或故事情节),则使用该线的 y 位置。对于一组线,使用中间位置的线。如果注释映射到具有垂直高度的图层或组(例如流图图层或故事情节组),则选择在该时间步具有最大垂直高度的组并使用其中间 y 位置。如果属性映射到包含线和组的组合属性,则使用线最中间的 y 位置。

排名前 n 的放置算法的优点是仅显示得分最高(即“最重要”)的注释,并在其最显着的位置进行显示。但是,当多个注释锚定到同一 (x,y) 位置时,这有时会导致遮挡。如果用户对此感到困扰,他/她可以将注释锚点拖动到其他可用位置来解决此问题。

5.3.2 基于密度的放置算法

在密度算法中,放置在视图上的每个注释都会对其周围区域应用权重。更重要的注释(得分更高的注释)对其直接区域有更大的影响。如果某个区域附近没有注释,并且其得分高于该区域中字段的密度权重,则可以附加得分较低的注释。具有多个高分注释的区域将对周围区域施加很大的权重,从而防止显示的该部分显示附近的低分注释并变得混乱。图 7 显示了使用此算法尝试放置四个注释的示例。
在这里插入图片描述

该算法的工作原理如下:从排名最高的注释开始,根据其“突出位置”放置它。使用其得分对周围区域应用核密度估计[37]。分布函数可以是用户定义的,但我们发现正态分布和线性分布都效果很好。接下来,开始迭代注释列表。对于允许放置的每个潜在 (x,y) 点,选择密度场中权重最低的点。如果它的分数大于该位置的字段权重,则将注释放置在视图上并将其分数应用于密度字段。如果注释可以均匀地放置在多个 (x,y) 位置,请选择最接近其“突出位置”的一个。继续迭代,直到到达列表末尾或直到所有剩余注释都低于字段的最低阈值分数(用户定义的数字)。

当用户更新视图窗口时,可能显示的注释列表将被重置并重新过滤,因此之前由于另一个注释的权重而被删除的注释现在可能会显示。当用户缩放和平移时间布局时,这允许注释“弹出”并填充新区域。该技术的另一个特点是,当交互发生时,未固定到单个 (x,y) 位置的注释可以“滑动”到 TSI 的权重较小的部分。如果用户不喜欢某个注释,则删除它可以让排名较低的注释出现在其空出的空间中。

6 实施与评估

我们已经实现了一个 TSI 原型应用程序,用 Java 和Processing 编写。对于时间布局,它允许显示折线图、流图和故事情节。数据快照存储为图像文件,并根据选定的时间步长进行检索。

注释显示为通过弹簧连接到其锚点的文本框。力导向布局可确保文本框实现良好的分布并且不会相互遮挡。为了风格化 TSI,可以禁用力方向并将文本框拖动到首选位置。对于每种 POI 类型,我们在生成注释时使用默认的“漂亮打印”句子,但这些句子可以进行编辑。

手动创建的注释默认为最高等级,因此始终放置它们(除非在当前视图窗口之外)。注释也可以“固定”到显示屏上。我们的系统允许用户在可用的 (x,y) 位置之间拖动注释的锚点。基于密度的放置算法的权重参数可以调整,包括权重分布半径和字段的最低阈值分数。用户认为不重要的 POI 和属性可以被删除或将其分数设置为零。这可确保任何引用注释将在排序列表中排在最后,并且首先显示得分较高的注释。

除了主 TSI 视图之外,我们的原型还包括一个单独的 Helper 面板(如图 8 所示)。该面板处理大多数系统交互,例如选择放置算法或编辑数据快照逻辑。它还显示所有创建的注释的列表(甚至是未显示在显示屏上的注释),以允许检查和搜索可以固定查看的特定注释类型。
在这里插入图片描述

6.1 评估

为了验证我们的框架并演示如何“在野外”使用 TSI,我们使用科学数据集进行了两个案例研究。第一个是由 EpiSimS 团队的三名成员通过两次会议完成的:一名拥有 20 多年经验的程序员和统计学家,以及一名三年级博士后物理学家。第二个案例研究是由六名宇宙学研究人员进行的:与三名研究生和一名博士后学者进行一次会议,并对研究生进行两次单独的在线访谈。在这两项研究中,参与者与我们的系统进行交互并构建了 TSI(尽管在线会议只是演示)。根据反馈和观察,我们认为 TSI 可以有效地帮助领域用户分析数据并创建简洁的叙述性可视化。

6.1.1 案例一:EpiSimS 仿真

EpiSimS 是一个可扩展、随机、基于代理的美国传染病模型[30]。根据传播率、潜伏期、蚊子数量和反应机制等输入参数,将疾病引入易感人群,并通过媒介之间的相互作用进行传播。在正常(非 TSI)工作流程中,团队成员选择一组输入参数并运行模拟实例。为了检查输出数据属性,他们通常使用 R 或 matplotlib 等传统工具创建折线图和/或空间视图。

通过 TSI,这些观点被结合在一起。图 8 显示了该研究第一阶段构建的 TSI(数据来自 [31])。流图显示了三个重要的时间疾病属性。数据快照显示疾病的空间演变。通过排名前 n 的放置算法,该团队确定了三个时间属性的最大极值,并将它们的注释固定到视图上,同时注释还注明了初始感染播种值(被感染的 POI 类型为“First”)属性)。最后,手动查询的注释标志着该模拟转变为“流行病”状态。
在这里插入图片描述

在图 9 中,我们展示了两个基于故事情节的 TSI。创建这些是为了展示如何使用密度放置算法来帮助解释复杂绘图中的视觉特征。在这种情况下,两个模拟输出会相互比较。由于篇幅限制,对这些 TSI 的讨论可以在附录中找到。

根据在构建 TSI 和使用系统的两次会议期间与 EpiSimS 团队成员的讨论,我们收到了有关 TSI 工作流程许多方面的反馈,总结如下:

对于数据汇总和演示:“我喜欢这些时间汇总图像。他们很容易获得反馈。对于流感,我们可能对一组产品线感兴趣,但对于蚊媒疾病,我们可能对其他产品感兴趣。将快照放在顶部可以让您了解地理情况以及疾病的发展方向。” “这有很多好处。这些是我想放在出版物中的照片。”

对于注释工作流程:“注释有助于指出我关心的内容。我需要知道,目前有多少人被感染?死了多少人?” “自动生成注释对于快速查看何时发生重大变化非常有帮助。”

对于基于流图的 TSI,团队使用 top-n 排名放置算法来探索数据。 “快速看到亮点是件好事,因为你可以缩小想要进一步探索的范围。真是个好主意,非常有用。”由于疾病相对一致的倾斜行为,密度放置算法对于流图示例(图 8)没有被视为有用。 “对于其他[密度]放置技术来说太简单了。”相反,它的实用性是针对故事情节人物,因为故事情节人物在视觉上更加复杂。 “很高兴看到何时以及发生了什么重大变化,并记录行为何时发生。这样探索起来更容易。”

6.1.2 案例二:千年宇宙学模拟

ΛCDM 宇宙学模型,例如千年模拟 [27, 38] 涉及宇宙的结构和形成。对于第二个案例研究,我们分析了发生的星系特性 [8]。对于数据集,我们检索了附加到六个最大合并树的主要祖先分支节点的星系。对于这些星系,我们观察两个重要的属性:恒星质量(SM)和恒星形成率(SFR),它们可用于显示结构和形成行为趋势。它们发生在一个重要的全宇宙“天文 POI”的背景下,标志着从物质主导时代到红移约为 2 的暗能量主导时代的转变。

在这里插入图片描述

图 10 显示了本研究的 TSI。折线图显示了六个选定合并树的红移上的 SM 和 SFR。两组数据快照突出显示了 Alpha 和 Delta 合并树的空间形成。对于这两个折线图,redshift = 2 处的附加注释标记了“天文 POI”。其他注释突出显示了 Alpha 树和 Delta 树的显着极值(红色和紫色线)。

并置 SM 和 SFR 折线图突出显示了星系特性如何在红移 = 2 注释的两侧表现出重要的行为变化。对于 SM 来说,大部分增长发生在暗能量主导的时代(红移 = 2 的右侧)。注释标记了 Alpha 树和 Delta 树的快速增加和最大值。 Delta 树显示出特别有趣的 SM 斜率快速增长(即斜率变化),从红移 0.516 到 0.171。在 SFR 图表中,大多数活动发生在红移 = 2 的左侧。Alpha 树上的注释强调它有一个大峰值,但随后在模拟的其余部分下降。 Delta 的最大峰值也出现在红移 = 2 的左侧,但注释指出其右侧有多个局部峰值,其中一个进入暗能量主导时代。这发生在红移 0.171 处,这与 SM 快速增加的时间段一致。这种奇怪的行为可能需要对达美航空的原始合并树数据进行进一步调查(正如研究参与者所指出的)。

宇宙学参与者的反馈和讨论比 EpiSimS 团队更加复杂。虽然大多数人喜欢 TSI 框架,并将其技术视为对正常工作流程的改进,但一位在线会议参与者表示,他不相信 TSI 方法能够满足他的需求。谈到观察注释,他认为“标记这些只会使图像变得混乱。”但其他用户却有不同的感受;他们的评论整理如下:

自动注释能够给出数据的初步感觉:“这些注释非常适合提供快速的顺序,例如数量级估计。”对于更微妙或派生的兴趣点,一名参与者会转而进行查询。 “[那么]手动查询非常有用。我根据图表寻找的东西变化很大,单个系统涵盖所有标准可能是不合理的。”这得到了另外两名用户的响应,他们认为注释可能难以显示数据 POI 的潜在意义或推理:

一位参与者喜欢能够在两种放置算法之间切换:“所以我喜欢注释放置的灵活性。我认为,如果您想要及时标记某个事件,并评估其中的数字或特征,那么排名靠前的注释尤其有用。”

在将 TSI 与其领域工具(主要是 R 和 Python)进行比较时:“社区中我们很难找到显示事物演化图表的好方法。这对于在论文中显示数据肯定有用,而不是我们通常使用的数据。”特别是,TSI 提供的一个优势是他们专注于讲故事:“我喜欢创造性地添加快照和/或图中注释的想法。这些东西可以帮助讲述一个故事,具体取决于你想要展示或理解的具体内容。”

7 讨论

根据设计过程和案例研究的反馈,关于 TSI 框架的当前状态和我们的原型实现,有很多可以讨论的要点。

7.1 TSI 框架的优点

TSI 旨在汇总至少具有两个强维度轴的数据,其中一个始终假定为时间轴。虽然这将框架限制为时间相关的数据集(使用当前实现的四个时间布局选项),但存在大量通用和特定领域的数据集,可以利用我们的工作流程进行可视化创建和分析。

这两个案例研究的参与者都指出,他们认为注释指导了他们对数据的分析感知,并且 TSI 的“呈现”方面非常具有视觉吸引力和说服力。而李等人。有人质疑单一工具是否应该结合分析和设计过程[26],根据 TSI 框架的设计要求集和案例研究参与者的反馈,我们认为对于这个问题空间来说这是合理的。在这方面,TSI 比 R 或 Python 等简单绘图更强大,因为它利用交互式和分析工作流程,向用户推荐快照和注释。通过构建可视化数据故事的最终结果,它比纯粹为数据分析而设计的高度复杂的技术或多组件方法具有优势。

在 TSI 中有意使用传统(甚至简单)视觉组件是一个额外的优势。通过不引入新颖的视觉表示,构建 TSI 进行演示的作者知道潜在受众没有固有的学习曲线,特别是因为注释是基于文本的,并且可以专注于分析和总结数据。

7.2 自动评分数据属性

如第 5.2.1 节所述,我们当前的系统仅支持手动属性评分。但是,可以根据数据集属性自动导出属性分数。当属性数量扩大到使个人评分变得困难或耗时的数量时,这可能特别有用。为了自动对时间序列进行评分,基于距离的度量(例如欧几里德距离、明可夫斯基距离或曼哈顿距离)可以测量每个向量之间的相似性;还有类似的技术分类数据[9]。每个数据属性可以根据其与数据集中其他属性的总体相似性进行评分。其副产品是可以将特别相似的属性组合起来形成组合属性。自动评分的另一种方法是使用数据熵或幅度度量来衡量数据集的整体变化或波动性,并据此对属性进行排名。组合属性还可以通过组合具有相似分数的属性来形成。

7.3 更深入、更广泛地研究快照注释

目前,我们计划以三种方式扩展我们的注释创建流程,超越系统当前使用的基于 POI 的时间标记。我们可以通过“更深入”、“更广泛”以及将注释与数据快照集成来做到这一点。更深入意味着我们将包含信息指标或线索,以帮助解释每个创建的注释的重要性(宇宙学案例研究的参与者指出缺乏这一点)。范围更广意味着包括系统可识别的更多类型的 POI,例如统计或派生指标。我们还计划允许 TSI 作者保存手动 POI 查询,稍后可以检索这些查询以生成自定义注释,就像 SQL 中的存储过程一样。

最后,计划将注释与数据快照更紧密地集成。实现此目的的一种方法是允许“数据快照注释”,其中数据快照帧可以直接附加到时间布局。这种类型的注释可以充当显示器上特定数据属性的“放大”数据正交视图。

7.4 当前设计的限制

虽然 TSI 建议注释和数据快照时间步长,但对于大多数其他系统交互,几乎没有用户指导。也就是说,设计者必须明确选择选项,例如用于时间布局和数据快照的技术,以及适当的调色板应该是什么。

然而,这里的一个假设是 TSI 作者熟悉基础数据集。因此,他们可以简单地选择当前在其他绘图工具中使用的相同视图,并利用 TSI 框架提供的优势。虽然像 Show Me [29] 这样的推荐系统可以有效地向用户建议新的视觉投影,但该论文的作者指出,一旦用户“确定”了一组首选视图,此推荐功能的使用就会显着增加滴。因此,如果用户知道哪些一般类型的视图适合其数据,那么缺乏对此类设计选择的建议就可以忽略不计。

TSI 也没有为选择要显示的最佳数据快照数量等问题提供指导。显然,选择太多会使显示混乱(我们的实现根据显示的数量缩小快照,但有最小大小限制)。如果显示中附加了太多注释,也会发生同样的混乱情况。然而我们注意到,虽然这样的问题可以通过不同的时间步选择和放置算法来解决,但我们的系统可以轻松地允许用户交互式地修改这些组件的约束。如果视图混乱,他们可以更改必要的设置以清除显示并解决此类问题。

虽然从美学角度来看,我们当前的 TSI 编辑选项大多被认为是通过案例研究反馈来“胜任任务”,但我们正在研究如何扩展用户调整和设置视图样式的方式。最近一篇描述 GraphCoiffure 系统的论文 [39] 提出了一组改进用户工作流程以创建图形网络的演示风格图像的技术;类似的方法可以集成到我们的系统中,以提高灵活性并加快设计过程。

最后,尽管(正如一位案例研究参与者所总结的)注释放置算法“似乎运作良好”,但我们目前的结果和反馈都是通俗的。缺乏正式的评估是当前的限制,我们计划进行全面的可用性研究,以确定最佳的使用实践和策略。

8 结论

我们提出了时间摘要图像,这是一种通过交互式探索过程进行解释性可视化的新方法。通过利用“幕后”技术来协助用户分析和设计,我们简化了为复杂或多维数据集创建叙事可视化的过程,帮助弥合数据探索和讲故事之间的差距。

TSI 是一种适合许多数据集的分析和总结技术,我们提供了其在一般领域和科学领域中的使用示例,以及验证我们方法的领域用户反馈。未来的工作将集中于成熟和改进我们实施的框架,并将其扩展到新的功能和技术。

致谢

作者衷心感谢加州大学戴维斯分校 VIDi 实验室的 Annie Preston (apreston@ucdavis.edu) 在宇宙学案例研究中提供的帮助。这项研究由 INGVA/LANL、美国国家科学基金会(通过拨款 DRL1323214、IIS-1528203 和 IIS-1320229)以及美国能源部(通过拨款 DE-FC02-12ER26072)部分赞助。本文中使用的千年模拟数据库以及提供在线访问这些数据库的 Web 应用程序是作为德国天体物理虚拟观测站 (GAVO) 活动的一部分而构建的。

参考文献

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/747302.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

科技未来·无限可能“2024世亚智博会”

随着科技的飞速发展,人类社会正以前所未有的速度迈向一个全新的时代。科学技术作为第一生产力,不仅极大地推动了经济和社会的发展,更在不断地改变着我们的生活方式和思维方式。特别是在人工智能、物联网等前沿科技领域,其创新和应…

搜索引擎的妙用:掌握这些技巧,让你的搜索更高效!

搜索引擎是我们日常生活中不可或缺的工具,它帮助我们快速找到所需的信息。但是,你真的知道如何高效地使用搜索引擎吗?下面,我将分享一些高级搜索技巧,让你的搜索更加精准和高效。 1. 完全匹配搜索 当你想要搜索一个特…

OutOfMemoryError能被catch(Exception)捕获吗?

背景 写了一个 Kafka 消费者程序,Kafka 集群中数据量过大时,消费线程无故退出了,日志打印了心跳 OOM 异常信息: 但是消费线程里面的 run 方法里面明明包含了 catch (Exception e) ,结尾信息没有打印异常,…

钢筋计在工程项目中的关键应用与优势

在长期工程项目中,如大型桥梁、高层建筑或深基坑工程中,钢筋是承载结构的重要组成部分。为确保工程质量和安全,监测与管理钢筋的状态至关重要。钢筋计作为一种先进的监测工具,在长期工程项目中发挥着不可替代的作用。 1. 钢筋计的…

Python-井字棋

井字棋 1.设计登录界面1.1导入需要的工具包1.2窗口显示1.3登录界面图片显示1.6标签按钮输入框显示 2.登录功能实现2.1用户数据存储 2.2登录和注册2.2.1登录功能实现2.2.2注册功能实现 3.井字棋游戏3.1 导入需要的工具包3.2 窗口显示3.2 按钮标签显示3.3 棋盘设置初始状态3.4 游…

Adobe AIR是什么?能做什么?

Flash(Animate)软件能制作二维动画以及普通的互动课件是多数人了解的,其实Adobe还有一个AIR平台,可以用来开发更多不同的内容,这里就自己理解和掌握的信息分享一下AIR平台。 基本介绍 Adobe AIR是和Flash制作软件相依…

基于UDP的网络聊天室(多线程实现收和发消息)

要求&#xff1a;1.有新用户登录&#xff0c;其他在线的用户可以收到登录信息 2.有用户群聊&#xff0c;其他在线的用户可以收到群聊信息 3.有用户退出&#xff0c;其他在线的用户可以收到退出信息 4.服务器可以发送系统信息 效果图&#xff1a; service.c #include <head…

Day5:有效的字母异位词 242 两个数组的交集 349 快乐数 202 两数之和1

题目242. 有效的字母异位词 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool isAnagram(string s, string t) {//把数组当成哈希表&#xff0c;用两个数组来存储取模后的字母对应的数量//26个字母&#xff0c; 模25 0~25int arrs[26];int arrt[26];for(…

<电力行业> - 《第4课:什么是电力?什么是发输变配用5环节?》

1 什么是电力&#xff1f; 我们对于平日生活中离不开的电很熟悉&#xff0c;但是电力是什么&#xff1f; 其实&#xff0c;电力就是电能作为动力的能源。电力就是我们说的电&#xff0c;不过更多了系统化。 19世纪70年代&#xff0c;电力的发明和应用掀起了第二次工业化高潮。…

MySQL之可扩展性(四)

可扩展性 向外扩展 分片?还是不分片&#xff1f; 这是一个问题&#xff0c;对吧&#xff1f;答案很简单:如非必要&#xff0c;尽量不分片。首先看是否能通过性能调优或者更好的应用或数据库设计来推迟分片。如果能足够长时间地推迟分片&#xff0c;也许可以直接购买更大地服…

springcloud第4季 springcloud-alibaba之openfegin+sentinel整合案例

一 介绍说明 1.1 说明 1.1.1 消费者8081 1.1.2 openfegin接口 1.1.3 提供者9091 9091微服务满足&#xff1a; 1 openfegin 配置fallback逻辑&#xff0c;作为统一fallback服务降级处理。 2.sentinel访问触发了自定义的限流配置&#xff0c;在注解sentinelResource里面配置…

吴恩达机器学习 第三课 week2 推荐算法(下)

目录 01 学习目标 02 基于内容的过滤算法 03 实现“电影推荐系统” 3.1 问题描述 3.2 算法实现 04 大项目&#xff08;数据很大&#xff09;的推荐方法※ 4.1 方法原理 4.2 实施示例 05 总结 01 学习目标 &#xff08;1&#xff09;理解基于内容的过滤算法&#xff08…

(四十六)Vue Router组件所独有的两个钩子activate、deactivated

文章目录 activated钩子函数deactivated钩子函数demo 上一篇&#xff1a;&#xff08;四十五&#xff09;Vue Router之编程式路由导航 Vue Router提供了两个钩子函数&#xff0c;分别是activated和deactivated。 这两个钩子函数可以用于在路由组件的激活状态发生变化时执行相…

前端开发实战项目:实时天气预报应用

引言 在本实战项目中&#xff0c;我们将开发一个实时天气预报应用。这个项目将帮助你掌握前端开发的核心技能&#xff0c;包括HTML、CSS、JavaScript&#xff0c;以及如何使用API来获取实时数据。通过这个项目&#xff0c;你将学会如何构建用户界面、处理用户交互、以及与第三…

HarmonyOS Next开发学习手册——通过startAbility拉起文件处理类应用

使用场景 开发者可以通过调用startAbility接口&#xff0c;由系统从已安装的应用中寻找符合要求的应用来实现打开特定文件的意图&#xff0c;例如&#xff1a;浏览器下应用下载PDF文件&#xff0c;可以调用此接口选择文件处理应用打开此PDF文件。开发者需要在请求中设置待打开…

IO-Link ISDU

目录 一、引言 二、ISDU定义与功能 三、ISDU指令构成 四、ISDU应用场景 五、ISDU优势 六、总结 一、引言 IO-Link技术作为工业自动化领域的创新通信标准&#xff0c;通过单一电缆实现了设备层级的透明化通信。其中&#xff0c;Indexed Service Data Unit&#xff08;ISDU…

目标检测mAP

【目标检测】目标检测算法评估指标(性能度量) AP&#xff0c;mAP 详细介绍_ap和map的区别-CSDN博客 目标检测中的mAP | Clouds Blog 目标检测AP如何理解&#xff1f;_置信度与ap-CSDN博客 一、IOU (Intersection Over Union, 交并比) 二、查准率和查全率 True Positive (TP…

力扣随机一题 6/26 哈希表 数组 思维

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 题目一&#xff1a; 2869.收集元素的最少操作次数【简单】 题目&#xff…

Scania斯堪尼亚SHL题库综合能力性格测试真题题型解析及面试经验

一、走进Scania斯堪尼亚 Scania是一家成立于1891年的瑞典公司&#xff0c;专注于重型卡车和巴士的制造&#xff0c;以其模块化系统和环保设计闻名。作为全球领先的运输解决方案提供商&#xff0c;Scania不仅提供高质量的车辆&#xff0c;还提供相关服务和融资解决方案。公司秉…

我对AI赋能的未来畅想

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…