!!!###!!!title=快速上手——VisActor/VStory 教程文档!!!###!!!!!!###!!!description=在本教程中,我们将介绍如何使用 VStory 绘制一个简单的柱状图。VStory 是一款简单易用、跨平台、高性能的可视化叙事库。其能够将VisActor中的所有组件组合在一起,形成一个强大的可视化作品。!!!###!!!

快速上手

在本教程中,我们将介绍如何使用 VStory 绘制一个简单的柱状图。VStory 是一款简单易用、跨平台、高性能的可视化叙事库。其能够将VisActor中的所有组件组合在一起,形成一个强大的可视化作品。

获取 VStory

你可以通过以下几种方式获取 VStory

使用 NPM 包

首先,你需要在项目根目录下使用以下命令安装 VStory

# 使用 npm 安装
npm install @visactor/vstory

# 使用 yarn 安装
yarn add @visactor/vstory

使用 CDN

你还可以通过 CDN 获取构建好的 VStory 文件。将以下代码添加到 HTML 文件的 <script> 标签中:

<script src="https://unpkg.com/@visactor/vstory/dist/index.min.js"></script>

引入 VStory

通过 NPM 包引入

在 JavaScript 文件顶部使用 import 引入 VStory

import * as VStory from '@visactor/vstory';

使用 script 标签引入

通过直接在 HTML 文件中添加 <script> 标签,引入构建好的 vstory 文件:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <!-- 引入 vstory 文件 -->
    <script src="https://unpkg.com/@visactor/vstory/dist/index.min.js"></script>
  </head>
</html>

放置一个图表

在绘图前我们需要为 VStory 准备一个具备高宽的 DOM 容器。

<body>
  <!-- 为 vstory 准备一个具备大小(宽高)的 DOM,当然你也可以在 spec 配置中指定 -->
  <div id="story" style="width: 600px;height:400px;"></div>
</body>

接下来,我们创建一个 VStory 实例,准备一个柱状图的VChart图表和 DOM 容器的 ID, 生成DSL然后传入:

// 注册所有需要的内容
VStory.registerAll();
// 准备一个VChart图表
const spec = {
  data: [
    {
      id: 'barData',
      values: [
        { month: 'Monday', sales: 22 },
        { month: 'Tuesday', sales: 13 },
        { month: 'Wednesday', sales: 25 },
        { month: 'Thursday', sales: 29 },
        { month: 'Friday', sales: 38 }
      ]
    }
  ],
  type: 'bar',
  xField: 'month',
  yField: 'sales'
};

// 生成一个DSL,该DSL只包含一个VChart元素
const dsl = {
  characters: [
    {
      type: 'VChart',
      id: '0',
      zIndex: 1,
      // 图表在画布中的位置
      position: {
        top: 50,
        left: 50,
        width: 300,
        height: 300
      },
      options: {
        // 图表的背景板配置
        panel: {
          fill: '#ffffff',
          shadowColor: 'rgba(0, 0, 0, 0.05)',
          shadowBlur: 10,
          shadowOffsetX: 4,
          shadowOffsetY: 4,
          cornerRadius: 8
        },
        spec
      },
    }
  ],
  // 图表的具体动画编排
  acts: [
    // 幕数组,一个故事可以包含多个幕,幕与幕之间是有先后顺序的串联结构
    {
      id: 'default-chapter',
      scenes: [
        // 场景数组,可以包含多个场景,场景与场景是有先后顺序的串联结构
        {
          id:'scene0',
          // 场景中包含的动作数组,动作中描述了一个或多个character的具体行为,一个场景中可以包含多个动作,动作之间是并行执行的
          actions: [
            {
              characterId: '0',
              characterActions: [
                {
                  action: 'appear',
                  payload: {
                    animation: {
                      duration: 1000
                    }
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

// 创建 vstory 实例
const story = new VStory.Story(dsl, { dom: CONTAINER_ID, background: 'pink' });
const player = new VStory.Player(story);
story.init(player);

player.play(0);

至此,你已经成功使用VStory绘制出了一个简单的柱状图!

希望这篇教程对你学习如何使用 VStory 有所帮助。现在,你可以尝试添加不同类型的元素,并通过深入了解 VStory 的各种配置选项,组合出更加丰富多样的叙事效果。勇敢开始你的 VStory 之旅吧!