--- title: G6.Graph(cfg) order: 0 redirect_from: - /en/docs/api --- Graph is the carrier of G6. All the operations about events, behaviors, items are mounted on the instance of Graph. ```ts // highlight-start new Graph(cfg: GraphOptions) => Graph // highlight-end const graph = new G6.Graph({ container: '', width: 500, height: 500, modes: { default: ['drag-canvas'], }, layout: { type: 'radial', unitRadius: 50, center: [500, 300], }, }); ``` ### GraphOptions.container _string | HTMLElement_ **required** The DOM container of graph, it can be the id of a DOM element or the an HTML node. ### GraphOptions.width _Number_ **required** The width of the canvas for graph with the unit 'px'. ### GraphOptions.height _Number_ **required** The height of the canvas for graph with the unit 'px'. ### GraphOptions.fitView _Boolean_ **optional** _default:_ `false` Whether to fit the canvas to the view port. ### GraphOptions.fitViewPadding _Array | Number_ **optional** _default:_ `0` Takes effect only when `fitView: true`. It is the padding between canvas and the border of view port.
- It can be a value, e.g. `fitViewPadding: 20`, which means the padding to the top, left, right, bottom are the same.
- Or an array, e.g. `fitViewPadding: [ 20, 40, 50, 20 ]`, the four values in the array indicate the padding to the top, right, bottom, left respectively. ### GraphOptions.fitCenter _Boolean_ **optional** _default:_ `false` _Supported by v3.5.1._ Whether to translate the graph to align its center with the canvas. Its priority is lower than `fitView`. ### GraphOptions.linkCenter _Boolean_ **optional** _default:_ `false` Whether to connect the edges to nodes' center. ### GraphOptions.groupByTypes _Boolean_ **optional** _default:_ `true` Whether to group the nodes and edges separately. When it is false, all the items (including nodes and edges) are in the same group, and the order/zindex of them are determined according to the order of their generation. When you are using Combo, **MUST** set `groupByTypes` to `false`. ### GraphOptions.autoPaint _Boolean_ **optional** _default:_ `true` Whether to paint the graph automatically while item updated or view port changed. In order to enhance the performance, we recommend to turn off `antoPaint` when you are doing bulk operation on nodes or edges. This can be refered to [`setAutoPaint()`](#setautopaintauto). ### GraphOptions.modes _Object_ **optional** _default:_ `{}` The interaction modes of this graph. Please refer to [Interaction Mode](/en/docs/manual/middle/states/mode) for detail. #### GraphOptions.modes.default _Object_ **optional** _default:_ `[]` The default modes of this graph. Please refer to [Default Behavior](/zh/docs/manual/middle/states/defaultBehavior) for detail. ### GraphOptions.nodeStateStyles _Object_ **optional** _default:_ `{}` The node styles on different states, e.g. hover, selected. It is a new feature of G6 3.1. ⚠️ Note: If you are using version 3.1 or below, just change `nodeStyle` to `nodeStateStyles` and `edgeStyle` to `edgeStateStyles` and keep the configuration unchanged. ### GraphOptions.edgeStateStyles _Object_ **optional** _default:_ `{}` The edge styles on different states, e.g. hover, selected. It is a new feature of G6 3.1. ### GraphOptions.comboStateStyles _Object_ **optional** _default:_ `{}` The combo styles on different states, e.g. hover, selected. It is a new feature of G6 3.5. ### GraphOptions.defaultNode _Object_ **optional** _default:_ `{}` Default node configurations in global, including type, size, color and so on. Its priority is lower than the configurations in data. ### GraphOptions.defaultEdge _Object_ **optional** _default:_ `{}` Default edge configurations in global, including type, size, color and so on. Its priority is lower than the configurations in data. ### GraphOptions.defaultCombo _Object_ **optional** _default:_ `{}` Default combo configurations in global, including type, size, color and so on. Its priority is lower than the configurations in data. It is a new feature of G6 3.5. ### GraphOptions.plugins _Array _ **optional** _default:_ `[]` Plugins for graph. Please refer to [Plugin](/en/docs/manual/tutorial/plugins##plugin) for detail. ### GraphOptions.animate _Boolean _ **optional** _default:_ `false` Wheter activate the global animation. Which will take effect while changing layouts, changing data, and other global operations. ### GraphOptions.animateCfg _Object_ **optional** _default:_ `{}` The configurations for global animation. Takes effect only when `animate: true`. For more detail about animateCfg, see [Basic Animation Docs](/en/docs/manual/advanced/animation#animatecfg). #### GraphOptions.animateCfg.onFrame _Function_ **optional** _default:_ `null` The callback function for every frame of animation. The path of custom animation for node can be defined here. The nodes will move linearly when `onFrame` is null. #### GraphOptions.animateCfg.duration _Number_ **optional** _default:_ `500` Duration of animation with unit millisecond. #### GraphOptions.animateCfg.easing _string_ **optional** _default:_ `easeLinear` The easing function name of animation. Please refer to ease in d3. ### GraphOptions.minZoom _Number_ **optional** _default:_ `0.2` The minimum zoom ratio. ### GraphOptions.maxZoom _Number_ **optional** _default:_ `10` The maximum zoom ratio. ### GraphOptions.layout _Object_ **optional** _default:_ `{}` Configurations for layout. The `type` in it is the name of layout method with the options: `'random'`, `'radial'`, `'mds'`, `'circular'`, `'fruchterman'`, `'force'`, `'dagre'`, `'concentric'`, `'grid'`. When `layout` is not assigned on graph: - If there are `x` and `y` in node data, the graph will render with these information; - If there is no positions information in node data, the graph will arrange nodes with Random Layout by default. For more configurations for different layout methods, please refer to [Layout API](/en/docs/api/graphLayout/guide). ### GraphOptions.renderer _'canvas' / 'svg' _ **optional** _default:_ `'canvas'` Render the graph with Canvas or SVG. It is supported expecting V3.3.x. ### GraphOptions.enabledStack _boolean_ **optional** _default:_ `false` Whether to enable stack,that is, whether to support redo & undo operation. Support by V3.6 and latter versions. ### GraphOptions.maxStep _number_ **optional** _default:_ `10` The max step number of redo & undo, works only when the `enabledStack` is `true`. Support by V3.6 and latter versions.