VChart
全局 VChart 对象,也作为图表的总入口,用于图表的创建、更新和销毁。
静态属性
ThemeManager
主题管理器。可用于全局主题的注册、设置以及获取等,详见theme。
globalConfig
VChart 的全局配置项。这个对象里的属性可以直接修改,配置的生效时机依具体配置项而定。
uniqueTooltip(number) = true
是否全局显示唯一 tooltip。如果置 为 true,当某个图表触发 tooltip 时,同一页面的所有其他图表的 tooltip 将自动消失。
此配置修改后即时生效。
静态方法
useRegisters
/**
* 按需注册图表和组件
* @param comps
* @since 1.5.1
*/
static useRegisters(comps: (() => void)[]) {
comps.forEach((fn: () => void) => {
fn();
});
}
1.5.1 版本开始支持。 用于按需加载图表、系列、组件、环境兼容代码等。具体使用请参考 按需引入教程
useChart
/**
* 注册自定义图表
* @param charts 图表类
*/
useChart: (charts: IChartConstructor[]) => void;
用于注册扩展的自定义图表 Chart。
useSeries
/**
* 注册自定义系列
* @param series 系列类
*/
useSeries: (series: ISeriesConstructor[]) => void;
用于注册扩展的自定义系列 Series。
useComponent
/**
* 注册自定义组件
* @param components 组件类
*/
useComponent: (components: IComponentConstructor[]) => void;
用于注册扩展的自定义组件 Component。
useMark
/**
* 注册自定义 Mark
* @param marks Mark 图元类
*/
useMark: (marks: MarkConstructor[]) => void;
用于注册扩展的自定义 组件 Mark。
useLayout
/**
* 注册自定义的布局
* @param layouts 布局类
*/
useLayout: (layouts: ILayoutConstructor[]) => void;
用于注册扩展的自定义布局 Layout。
registerDataSetTransform
/**
* 注册 DataSet 数据方法
* @param name 数据 transform 方法名称
* @param transform 具体的 Transform 执行方法
*/
registerDataSetTransform: (name: string, transform: Transform) => void;
用于注册 DataSet 数据方法,常用于按需加载。
registerMap
/**
* 注册地图数据
* @param key 地图名称
* @param source 地图数据
* @param option 地图数据配置
*/
registerMap: (key: string, source: GeoSourceType, option?: GeoSourceOption) => void;
注册地图数据。
export type GeoSourceOption = IGeoJsonOption | ITopoJsonOption;
/** geojson 相关配置 */
export interface GeoSourceOption {
type: 'geojson';
/** 计算中心点 */
/** @default true */
centroid?: boolean;
/** 地图简化 */
/** @default false */
simplify?:
| boolean
| {
/**
* 一个以度为单位的数字(例如,纬度/经度距离)。
* 1度大约相当于69英里。默认值是0.001,大约是一个城市街区的长度。
* @default 0.01
* @since 1.11.0
*/
tolerance: number;
};
/** 逆时针回绕(Multi)LineString或(Multi)Polygon的外部环,内部环顺时针。*/
/** @default false */
rewind?:
| boolean
| {
/** 启用反向绕行 */
/** @default false */
reverse?: boolean;
};
}
/** topojson 相关配置 */
export interface ITopoJsonOption extends Omit<IGeoJsonOption, 'type'> {
type: 'topojson';
object: string;
}
unregisterMap
/**
* 卸载地图数据
* @param key 地图名称
*/
unregisterMap: (key: string) => void;
用于卸载地图数据。
getMap
/**
* 根据地图名称获取地图数据
* @param key 地图名称
* @returns 地图数据
*/
getMap: (key: string) => GeoSourceType;
根据注册的地图名称获取对应的地图数据。
初始化(new VChart)
new VChart(spec: ISpec, options: IInitOption);
用于创建 VChart 实例。
参数说明
spec
图表的 spec 配置,详见配置项页面。
options
图表配置,包含渲染容器等,详见的配置如下表:
| 属性名 | 类型 | 必选 | 描述 |
|---|---|---|---|
dom | string|HTMLElement | 否 | 仅生效于浏览器环境。 图表挂载的父容器,可以直接指定容器 id,也可以传入 dom 对象 |
renderCanvas | string|HTMLCanvasElement | 否 | 除去选择 dom 属性进行挂载父容器,也可以使用 renderCanvas 属性直接传入 canvas 实例/ canvasId,小程序/小组件环境请直接传入 id |
dataSet | DataSet | 否 | 数据集 |
autoFit | boolean | 否 | 是否自适应容器大小,默认为 true |
animation | boolean | 否 | 是否开启动画,默认为 true |
options3d | srIOption3DType | 否 | 3d 配置 |
layout | LayoutCallBack | 否 | 自定义布局函数 |
mode | string | 否 | 配置渲染环境,默认为 'desktop-browser',当需要在非浏览器环境渲染 VChart 时,需要配置该属性。 'desktop-browser': 默认模式,适用于 PC 及 H5; 'mobile-browser': H5 模式; 'node': Node 渲染; 'worker': worker 模式; 'miniApp': 小程序模式; 'lynx': lynx 渲染 |
modeParams | any | 否 | 配置 mode 参数一起使用,用于配置 mode 参数对应的环境的一些特殊配置 |
dpr | number | 否 | 设置屏幕分辨率 |
interactive | boolean | 否 | 图表交互全局开关,默认为 true,开启。 |
viewBox | object | 否 | 指定绘制的矩形区域,如 { x1: 100, y1: 100, x2: 300, y2: 300 } |
canvasControled | boolean | 否 | 用于告诉底层的渲染引擎 VRender,图表的 Canvas 是否是受控制的 canvas,如果不是的话,不会进行 resize 等操作。 |
stage | Stage | 否 | 外部传入的 VRender stage |
layer | Layer | 否 | 外部传入的 VRender layer |
beforeRender | Function | 否 | 绘制之前的钩子函数,(stage: IStage) => void |
afterRender | Function | 否 | 绘制之后的钩子函数,(stage: IStage) => void |
background | string\object | 否 | 绘图区域背景色设置,可以配置渐变色 |
logLevel | number | 否 | 日志类型,用于开发调试 |
disableDirtyBounds | boolean | 否 | 是否关闭 dirtyBounds |
enableView3dTransform | boolean | 否 | 是否开启 view3d 的变换模式 |
poptip | boolean | 否 | 是否开启省略文本的 poptip,用于查看完整的文本内容,默认开启 |
disableTriggerEvent | boolean | 否 | 是否关闭交互效果;从1.9.0版本开始支持 |
theme | string | ITheme | 否 | 默认主题(支持 完整主题对象或者主题名称,主题名称需要提前在 ThemeManager 中注册) |
enableHtmlAttribute | boolean | 否 | 底层 vrender 图形节点是否支持html属性; 从1.8.3版本开始支持 |
supportsTouchEvents | boolean | 否 | 是否支持 touch 事件,不支持就不监听 touch 事件; 从1.8.9版本开始支持 |
supportsPointerEvents | boolean | 否 | 是否支持 pointer 事件,不支持就监听 mouse 事件; 从1.8.9版本开始支持 |
ReactDOM | object | 否 | react-dom包导出产物,用于开启 vrender 渲染 react 元素; 从1.11.0版本开始支持 |
resizeDelay | number | 否 | 当自动响应容器 resize 事件时,触发 resize 的间隔时长,单位毫秒;从1.12.5开始支持 |
gestureConfig | GestureConfig | 否 | 手势事件配置;当配置非空,开启手势相关事件 |
autoRefreshDpr | boolean | 是 | 当切换屏幕的时候,dpr 发发生变更,是否自动刷新 dpr;当没有显示设置 dpr 的时候,默认开启该功能;自1.12.14版本开始支持 |
srIOption3DType类型定义如下
export interface srIOption3DType extends IOption3D { enable?: boolean; enableView3dTransform?: boolean; } export interface IOption3D { alpha?: number; beta?: number; gama?: number; center?: IPointLike; fieldRatio?: number; fieldDepth?: number; light?: { dir?: vec3; color?: string; ambient?: number; }; camera?: any; }
LayoutCallBack类型定义如下:
export type LayoutCallBack = ( chart: IChart, item: ILayoutItem[], chartLayoutRect: IRect, chartViewBox: IBoundsLike ) => void;
GestureConfig类型定义如下:
export interface GestureConfig { press?: { /** * @default 251 * 最小按压时间,单位为毫秒。 */ time?: number; /** * @default 10 * 按压时允许的最大移动距离。 */ threshold?: number; }; swipe?: { /** * 识别滑动所需的最小距离。 * @default 10 */ threshold?: number; /** * 识别滑动所需的最小速度,单位为每毫秒像素。 * @default 0.3 */ velocity?: number; }; tap?: { /** * 多次点击之间的最大时间间隔。 * @default 300 */ interval?: number; }; }
示例
import VChart from '@visactor/vchart';
const spec = {
// chart spec
};
// create an instance of VChart
const chart = new VChart(spec, {
dom: 'chart' // the id of chart container
});
属性
id
只读属性,VChart 实例的 id,内部生成。
方法
renderSync
同步渲染图表。
/**
* **同步**渲染图表。
* @param morphConfig 图表 morph 动画配置,可选
* @returns VChart 实例
*/
renderSync: (morphConfig?: IMorphConfig) => IVChart;
renderAsync
1.9.0 版本以后不推荐使用,后续会废弃异步渲染/异步更新相关 API
异步渲染图表。
/**
* **异步**渲染图表。
* @async
* @param morphConfig 图表 morph 动画配置,可选
* @returns VChart 实例
*/
renderAsync: (morphConfig?: IMorphConfig) => Promise<IVChart>;