SuperAPI AI 工具集

data-visualization

数据与分析

查看项目

更新于 10-15 09:24

技能介绍

用途

该技能用于在图表、图形、仪表盘、数据过渡以及任何信息可视化工作中应用动画。其核心思路是把迪士尼的十二动画原则映射到数据可视化场景,让动效服务于理解,而不是单纯装饰。

主要能力

技能以快速参考表的形式,将十二原则与数据可视化实现一一对应:

  • Squash & Stretch(挤压与拉伸):柱状图过冲后回弹、饼图扇区悬停时轻微扩展、气泡碰撞时压缩。动画是过渡性的,总数值需保持准确。
  • Anticipation(预备动作):数据出现前的短暂加载状态、扩展前的轻微收缩、计数器在快速计数前的短暂停顿,用于让用户对即将到来的信息有所准备。
  • Staging(舞台调度):按有意义的顺序揭示数据,最重要的先出现;高亮当前数据系列;聚焦时弱化无关元素,用动效引导数据叙事。
  • Straight Ahead / Pose to Pose(连续动作与姿势到姿势):实时流式数据连续动画,仪表盘快照在状态之间过渡,按数据性质选择方式。
  • Follow Through / Overlapping(跟随与重叠):数据点错峰入场,标签在其数据元素之后稳定,网格线先于数据出现,图例带轻微延迟动画。
  • Slow In / Slow Out(缓入缓出):数值变化平滑缓动,避免突兀跳变;可使用 d3.easeCubicInOut 或等效方法;计数器先加速后减速;进度条缓动到完成。
  • Arc(弧线):饼图从 12 点方向顺时针扫掠,桑基图沿曲线路径流动,网络图使用力导向弧线,径向图表从中心扩展。
  • Secondary Action(次要动作):工具提示跟随数据点移动,数值标签随柱状图增长而计数,坐标轴刻度响应比例变化,阴影表示数据深度。
  • Timing(时间节奏):初始入场 300-500ms 错峰;数据更新 200-300ms;悬停状态 100-150ms;筛选过渡 400-600ms。较慢的节奏有助于理解。
  • Exaggeration(夸张):显著变化值得关注,可对离群值使用脉冲或发光;阈值跨越触发强调;异常值动画更明显。不要夸张数据本身。
  • Solid Drawing(扎实构图):动画过程中保持比例一致,过渡不应扭曲数据关系,保持坐标轴对齐,运动全程视觉层级清晰。
  • Appeal(吸引力):数据入场应令人满意,专业、有目的的动效建立信任,避免无意义的动画,每个动作都应有助于理解。

使用方式

技能提供 D3.js 与 Chart.js 的代码模式。

D3.js 示例:

// Staggered bar entry with easing
bars.transition()
    .duration(500)
    .delay((d, i) => i * 50)
    .ease(d3.easeCubicOut)
    .attr("height", d => yScale(d.value))
    .attr("y", d => height - yScale(d.value));

// Smooth data updates
bars.transition()
    .duration(300)
    .ease(d3.easeCubicInOut)
    .attr("height", d => yScale(d.value));

Chart.js 示例:

// Animation configuration
options: {
    animation: {
        duration: 500,
        easing: 'easeOutQuart',
        delay: (context) => context.dataIndex * 50
    }
}

技能还给出按数据类型划分的时长参考:

  • 柱状图:入场 400ms 错峰,更新 300ms,悬停 100ms
  • 折线图:入场 600ms 绘制,更新 400ms,悬停 150ms
  • 饼图:入场 500ms 扫掠,更新 300ms,悬停 100ms
  • 散点图:入场 300ms 错峰,更新 200ms,悬停 100ms
  • 仪表盘:入场 500-800ms 级联,更新 300ms,悬停 150ms

适用场景

适用于需要为图表、图形、仪表盘、数据过渡或信息可视化设计动效的场景,尤其是希望动效帮助用户理解数据变化、层级和重点的场合。

限制

技能强调始终尊重 prefers-reduced-motion。数据可视化动画应帮助理解而非阻碍理解,需为禁用动效的用户提供即时状态回退。动画是过渡性的,不应改变数据本身的准确性。