展示类 · Data Visualization
数据可视化
开箱即用的多端图表库。
对于数据可视化场景,我们推荐使用 VChart。VChart 是字节跳动开源可视化解决方案 VisActor 的核心图表组件库,支持多种图表,简单易用,功能强大。
基于 VChart,我们定制了一套符合 Semi 风格的图表库,优势如下:
  • 🧩 开箱即用:简单配置及初始化即可使用
  • 🎨 风格统一:基于 VChart 定制了符合 Semi 风格的图表库样式,直接和 Semi Design Token 挂钩;默认样式经过多方验证,可读性和精确性高;支持用户自定义图表样式
  • 🌗 响应式:支持监听页面上的亮暗模式变化,自动对页面上的 VChart 图表进行热更新,同步换肤

安装和使用

1、安装

在 React 工程中,可以使用以下命令安装 @visactor/react-vchart
此外,还需安装 @visactor/vchart-semi-theme 来适配 Semi 默认主题或通过 Semi DSM 发布的自定义主题。

2、使用

Semi 自 v2.47.0 版本增加相关的 Design Token 用于实现 VChart 对 Semi 主题或通过 Semi DSM 发布的自定义主题的适配。因此对于 v2.47.0 及以上版本,只需要在全局执行一次 initVChartSemiTheme 方法进行初始化。该语句通常可以放在 React 项目的入口文件中。如:
initVChartSemiTheme 方法支持传入一个对象作为 option,其类型声明为:
对于 v2.47.0 以下版本的 Semi,虽然没有相应的 Design Token,但是可以借助 @visactor/vchart-semi-theme 中的内置主题包样式默认值。注意:此使用方式不支持明暗模式自动切换,用户可按需设置当前图表模式,代码示例如下:
主题包的更多信息见 @visactor/vchart-semi-theme
绘制图表以及更详细的指引详见 VChart 教程文档

常用图表类型示例

VChart 基于可视化语法库 VGrammar 和渲染引擎 VRender 进行封装,在满足数据呈现的同时,还支持面向叙事场景的动画编排、丰富的交互能力和定制化的图表风格,简单易用的配置大大降低了用户的学习成本。
VChart 支持多种不同的图表类型,包括组合图、折线图、面积图、柱状图/条形图、饼/环图、散点图、色块图、直方图、箱形图、瀑布图、进度条、漏斗图、时序图、区间柱图、区间面积图、词云、仪表盘、矩形树图、桑基图、玫瑰图、雷达图、地图、Circle Packing、旭日图等,图表示例详情见 VChart 图表示例。以下是基于 Semi Design 默认主题的 VChart 常用图表使用示例:

柱状图

基础柱状图

分组柱状图

堆叠柱状图

百分比堆叠柱状图

折线图

面积图

饼图

雷达图

散点图

设计规范

选用指南

为了帮助设计师进行图表选择,我们对常用的 11 种图表进行了深度解析,并归纳出图表选用方案,见图表选用规范

颜色规范

@visactor/vchart-semi-theme 中定义了 20 个离散数据色板的色值。色值从已有的 Semi 色板中按照分裂互补配色和暗亮交替的原则进行排序。对于离散数据色板,Semi Design 侧已声明了 20 个 Token,如果需要自定义离散数据色板,用户可以在 DSM 自定义主题时配置这些 Token。色值的具体生成步骤如下:

Step1: 遵从分裂互补取色,生成初版色稿

我们参考了经典配色理论,采用分裂互补取色原则,按照三个一组的方式进行取色。
分裂取色

Step2: 基线矫正,降低歧义提升对比

  1. 规避红绿等易引起歧义的色彩。
  2. 为保证区分度, 增强色彩对比,相邻颜色按照“暗-亮-暗-亮”的节奏进行灰度调整。
基线矫正

Step3: 感性调整,提升视觉美学

为了让色彩体系更加和谐,在科学理论支撑之外,还需在真实业务场景下进行美学修正。
视觉美学

Step4: 色板延展,适应广泛场景

在 10 色色板的基础上,我们拓展到 20 色色板以适应更为广泛的业务场景。
数据色板
在 VChart 中,还有许多应用于图表组件的语义颜色,比如背景色、边框、滑块、弹层、字体、字色等。@visactor/vchart-semi-theme 会读取 body 上的 Semi CSS Variables 的 Token 值来自动生成 VChart 图表主题,通常无需额外考虑此部分的规范。如果需要了解详细的语义颜色映射关系可以参阅以下两篇文档:

Design Token

Semi Design 为 VChart 声明的 20 个 Token 详见下表。
Note
在 @visactor/vchart-semi-theme 1.10.2 版本前,其中的名称为 --semi-color-data-n(n 为 0, 2, 4, 6, 8, 10, 12, 14, 16, 18)的 Token 值作为 10 色的色板。 在 @visactor/vchart-semi-theme 1.10.2 版本后,其中的名称为 --semi-color-data-n(n 从 0 到 9)的 Token 作为 10 色的色板。
使用问题咨询/建议,可加入 VChart 用户群进行反馈
微信号飞书用户群