a tall building lit up at night

微软亚洲研究院

Data Formulator:使用prompt就能轻松完成数据可视化

分享这个页面

编者按:在使用 AI 驱动的数据可视化工具时,你是否遇到过这些难题?比如,当你想要设计图表时,需要一次性描述你的可视化需求,既冗杂又繁琐;再比如,当你想要更改图表设计时,又需要从头重新输入一遍你的文本提示,AI 可能还会出错。现在,微软雷德蒙研究院深度学习组推出了 Data Formulator 工具。结合图形化用户界面和自然语言输入,该工具可以更加智能地完成你的数据可视化需求,它不仅支持通过简便地拖拽来生成图表,还能自发生成原来没有的数据概念,而且,可以通过 prompt 轻松完成各阶段的图表迭代。

Data Formulator 现已开源,欢迎大家试用,完成一次方便简易的数据可视化创作!


数据可视化是分析数据、激发灵感的重要手段。在将数据转化为图表的过程中,通常会先利用数据处理工具对数据进行预处理,再通过可视化工具将数据映射为图形,并根据图表效果进行必要的调整或进一步设计。随着大语言模型的进步,AI 驱动的数据可视化工具使创作过程变得更加简便。例如,通过自然语言描述可视化设计,大模型便能自动生成代码完成任务,大大节省了数据转换和可视化的工作量。

然而,如何有效利用 AI 更好地辅助数据分析师进行可视化创作,仍面临诸多挑战。特别是在可视化创作的迭代过程(iterative process)中,我们往往无法一蹴而就。每次更新设计都需要重新处理数据和绘制图表。当前 AI 可视化工具大多要求创作者通过文本提示(prompt)一次性描述完整的可视化需求,这不仅使得描述过程冗长繁琐,而且难以精确传达丰富的视觉信息。此外,当需要不断迭代更新设计时,每次也都要从头描述设计需求,既耗时又费力,且 AI 可能也无法一次性准确完成任务。

Data Formulator:结合图形界面操作与自然语言描述,让用户更好地与AI交流可视化设计

为了解决可视化迭代设计的难题,来自微软雷德蒙研究院的研究员们在 GitHub 上发布了一款 AI 驱动的开源可视化工具 Data Formulator。结合图形化用户界面(graphic user interface)和自然语言输入,Data Formulator 能够极大提升用户向 AI 传达迭代过程中可视化设计的能力,使得 AI 能够根据用户的指令逐步完成复杂可视化作品的创作与更新。

如图1所示,Data Formulator 的交互界面设计巧妙。用户在构思可视化设计时,可首先通过右侧的 Concept Encoding Shelf 来描述设计目标。在迭代过程中,用户则可通过左侧的 Data Threads 回顾之前的可视化作品,选择合适的路径进行跟进,进而描述新的可视化目标或进行微调。

Data Formulator 的用户交互界面
图1:Data Formulator 的用户交互界面

• 使用 Concept Encoding Shelf 描述可视化设计

Concept Encoding Shelf 的设计结合了传统图形化可视化工具中的“数据放置交互界面”(shelf configuration UI)与 AI 工具的自然语言输入功能,使用户能够更直观地描述可视化目标。用户在选定可视化类型(如柱状图、线性图)后,可通过拖拽数据列至相应的视觉通道(如 x 轴、y 轴、颜色等)来直接映射数据至图形。这种方法相比冗长的文字描述,更能直观且精确地传达图表的设计意图。

此外,Data Formulator 的独特之处在于,它允许用户通过自然语言添加原始数据中不存在的数据概念(data concept)到可视化映射中,从而打破现有数据格式的限制,实现更加深入和丰富的可视化设计。

如图2所示,用户可以在 y 轴上添加“可持续能源百分比”这一数据概念(尽管原始数据仅包含各种能源的消耗值而非百分比),Data Formulator 将自动决定如何转换原始数据,计算出所需的数据栏以完成这一可视化。同样地,若用户希望查看不同国家的可持续能源百分比排名,则可以在 y 轴上添加“排名”数据栏,并通过额外的自然语言描述“计算不同国家的排名”,以指导 Data Formulator 完成相应的可视化过程。

Data Formulator 允许用户添加不存在的数据概念,自行完成转换
图2:Data Formulator 允许用户添加不存在的数据概念,自行完成转换

• 借助 Data Threads 迭代可视化

当需要在现有图表基础上进行迭代时,用户可以直接在 Concept Encoding Shelf 上使用自然语言来传达迭代指令(或修改之前的数据映射)。例如,输入“仅展示前五名国家的可持续能源百分比”,Data Formulator 便能据此进一步处理数据,实现迭代,无需用户重新描述整个流程。这种方法显著减轻了用户的输入负担。

Data Formulator 支持在现有图表基础上,通过自然语言指令进行迭代
图3:Data Formulator 支持在现有图表基础上,通过自然语言指令进行迭代

若需追溯至先前的可视化作品进行重新分析,用户则可以利用 Data Threads 功能浏览之前的可视化历程,并选择合适的节点继续研究。例如,用户若想绘制一个柱状图来展示所有国家从2000年至2020年的排名变化,可以返回至“可持续能源百分比排名”的图表,并通过自然语言指令“比较不同国家2000至2020年间的排名变化”来指引 Data Formulator 基于历史数据进行深入分析,并生成所需的图表。

Data Formulator 支持在过往图表基础上,通过自然语言指令进行迭代
图4:Data Formulator 支持在过往图表基础上,通过自然语言指令进行迭代

大模型代码生成连接可视化与数据转化模块

Data Formulator 的设计策略是将数据转换与可视化过程分离开来,以提高大模型执行任务的准确度,并通过模型的代码生成能力将这两个阶段衔接。如图5所示,用户设定可视化目标后,Data Formulator 首先会根据图形界面中的输入实例化图形模板,并生成一段 Vega-Lite 代码。由于用户输入中包含了新的数据概念,Data Formulator 需要对数据进行转换以创建可视化。为此,它会将用户的输入转换为大模型的提示词,指导模型生成 Python 代码以转换数据,满足 Vega-Lite 代码的需求。

Data Formulator 架构示意图
图5:Data Formulator 架构示意图

数据转换完成后,Data Formulator 会将处理后的数据与可视化代码结合,实现最终的可视化效果。在用户选择基于先前可视化进行迭代时,Data Formulator 则会利用原有代码生成新代码,从而减少代码生成过程中的不确定性,更有效地完成用户任务。

在 Data Formulator 的研究中,研究员们致力于融合图形化操作与 AI 的自然语言输入,希望帮助用户更有效地表达他们的可视化目标。但随着大模型的不断进步,如何使用户以简洁而精确的方式传达任务意图变得尤为关键,这也是研究员们未来探索的方向之一。

欢迎大家来 GitHub Codespaces 中试用 Data Formulator 创作可视化!

链接:https://github.com/microsoft/data-formulator/blob/main/CODESPACES.md (opens in new tab)

开发者们可以在 Data Formulator 代码库的基础上开发新的功能。

Data Formulator 代码库:https://github.com/microsoft/data-formulator (opens in new tab)

想要了解更多 Data Formulator 背后的设计理念,请查看论文:https://arxiv.org/abs/2408.16119 (opens in new tab)