antvis
G
TypeScript

💥 A flexible rendering engine for visualization.

Last updated Jul 7, 2026
1.2k
Stars
229
Forks
39
Issues
+1
Stars/day
Attention Score
95
Language breakdown
TypeScript 67.4%
JavaScript 26.1%
HTML 4.6%
GLSL 1.7%
Shell 0.2%
CSS 0.0%
Files click to expand
README

English | 简体中文

G

CI Coverage Status semantic-release: angular

TypeScript License

npm package npm downloads Percentage of issues still open PRs Welcome Ask DeepWiki

As the underlying rendering engine of AntV, G is dedicated to provide consistent and high performance 2D / 3D graphics rendering capabilities for upper layer products, adapting all underlying rendering APIs (Canvas2D / SVG / WebGL / WebGPU / CanvasKit / Node.js) on the web side. In particular, it provides GPGPU support for algorithms suitable for parallel computing in graph scenarios.

D3 force directed graph D3 barchart D3 sketchy barchart Yoga plugin Box2D physics engine plugin Rough.js plugin Canvaskit plugin Yoga plugin Canvaskit plugin 3D force directed graph

✨ Features

Easy-to-use API。The graphics and event system is compatible with DOM Element & Event API, and the animation system is compatible with Web Animations API, which can be adapted to the existing ecosystem of Web side such as D3, Hammer.js gesture library, etc. at a very low cost.

Support multiple rendering environments。Support Canvas2D / SVG / WebGL / WebGPU / CanvasKit and runtime switching, and also server-side rendering.

High performance rendering and computing。WebGPU-based GPGPU support for parallelizable algorithms. webgpu-graph is a library of graph analysis algorithms using GPU acceleration.

Extensible plug-in mechanism and rich set of plug-ins:

  • Rendering Related
- canvas-renderer Rendering 2D graphics based on Canvas2D. - svg-renderer Rendering 2D graphics based on SVG. - g-plugin-device-renderer Rendering 2D graphics based on GPUDevice. - html-renderer Rendering DOM with HTML. - g-plugin-3d Extended 3D capabilities. - g-plugin-rough-canvas-renderer Perform hand-drawn style rendering with rough.js and Canvs2D. - g-plugin-rough-svg-renderer Perform hand-drawn style rendering with rough.js and SVG. - canvaskit-renderer Rendering 2D graphics based on Skia.
  • Picking
- canvas-picker Do picking with Canvas2D and mathematical calculations. - svg-picker Do picking with SVG and DOM API.
  • Interaction
- dom-interaction Binds event listeners with DOM API. - g-plugin-control Provides camera interaction for 3D scenes. - g-plugin-dragndrop Provides Drag 'n' Drop based on PointerEvents.
  • Physics Engine
- g-plugin-box2d Based on Box2D. - g-plugin-matterjs Based on matter.js. - g-plugin-physx Based on PhysX.
  • Layout Engine
- g-plugin-yoga Provides Flex layout capabilities based on Yoga.
  • GPGPU
- g-plugin-gpgpu Provides GPGPU capabilities based on WebGPU.
  • CSS Selector
- g-plugin-css-select Supports for retrieval in the scene graph using CSS selectors.
  • A11y
- g-plugin-a11y Provides accessibility features.

📦 Install

# Install Core
$ npm install @antv/g --save

Canvas Renderer

$ npm install @antv/g-canvas --save

SVG Renderer

$ npm install @antv/g-svg --save

WebGL Renderer

$ npm install @antv/g-webgl --save

🔨 Usage

<div id="container"></div>
import { Circle, Canvas, CanvasEvent } from '@antv/g';
import { Renderer as CanvasRenderer } from '@antv/g-canvas';
// or
// import { Renderer as WebGLRenderer } from '@antv/g-webgl';
// import { Renderer as SVGRenderer } from '@antv/g-svg';

// create a canvas const canvas = new Canvas({ container: 'container', width: 500, height: 500, renderer: new CanvasRenderer(), // select a renderer });

// create a circle const circle = new Circle({ style: { cx: 100, cy: 100, r: 50, fill: 'red', stroke: 'blue', lineWidth: 5, }, });

canvas.addEventListener(CanvasEvent.READY, function () { // append to canvas canvas.appendChild(circle);

// add listener for click event circle.addEventListener('click', function () { this.style.fill = 'green'; }); });

⌨️ Development

Start previewing demos:

git clone git@github.com:antvis/g.git
cd g
pnpm install
pnpm build
pnpm dev

API Spec

Start a dev-server on root dir, eg. http-server:

http-server -p 9090

Open api.html on localhost:9090/spec/api.html.

Run test cases

Build and run test cases:

pnpm build
pnpm test

Run demos

Preview our dev demos:

pnpm build
pnpm dev

Inspired by

Contributors

|
dengfuping

|
xiaoiver

|
dxq613

| [
dependabot-preview[bot]](https://github.com/apps/dependabot-preview)
|
zhanba

|
afc163

| | :-: | :-: | :-: | :-: | :-: | :-: | |
limichange

|
entronad

|
hustcc

|
tangying1027

|
zengyue

|
simaQ

| |
lessmost

|
visiky

|
lxfu1

|
ICMI

|
Deturium

|
Yanyan-Wang

| |
yiiiiiiqianyao

|
moayuisuda

|
elaine1234

|
mxz96102

|
DrugsZ

|
baizn

| |
terence55

|
tyr1dev

|
budlion

|
luoxupan

|
ikxin

|
Leannechn

|


dev-itsheng

This project follows the git-contributor spec, auto updated at Wed Jun 21 2023 13:21:24 GMT+0800.

🔗 More in this category

© 2026 GitRepoTrend · antvis/G · Updated daily from GitHub