Git Product home page Git Product logo

d3-force-graph's Introduction

D3-Force-Graph

Build Status version mit

demo1 demo2 gif1 gif2

Intro

D3-Force-Graph is a javascript component which can create a force-directed graph using D3-force and web worker for calculation layout and ThreeJS for rendering. It can support large amount datasets rendering (~ 100k nodes and links) and custom styles.

Online Demos

Install

npm i d3-force-graph --save

Usage

let chart = new D3ForceGraph(container, data, config)

Example:

import {D3ForceGraph} from 'd3-force-graph'

let $container = document.getElementById('container')
let testData = {
  nodes: [{
    id: 'TestNodeA'
  }, {
    id: 'TestNodeB'
  }],
  links: [{
    source: 'TestNodeA',
    target: 'TestNodeB'
  }]
}
let chart = new D3ForceGraph($container, testData, {
  width: 500,
  height: 500
})

params

{
  nodes: [{
    id: 'c2Fkcw',                             // mandatory,   string,   unique node id
    name: 'TestNodeA'                         // optional,    string,   node alias
    scale: 1                                  // optional,    number,   node size scale, default is 1
    image: 'https://example.com/example.jpg'  // optional,    string,   node image url
  }, ...],
  links: [
    source: 'c2Fkcw',                         // mandatory,   string,   link source node id
    target: 'c2Fkcy',                         // mandatory,   string,   link target node id
   color: [255, 255, 255]                     // optional,    array,    link color, [R, G, B] from 0 ~ 255, default is [255, 255, 255]
  ]
}
{
  width: 600,                               // mandatory,   number,   chart width
  height: 600,                              // mandatory,   number,   chart height
  nodeSize: 3000,                           // optional,    number,   node size, rendering node size = nodeSize * node.scale, default is 3000
  arrowSize: 1250,                          // optional,    number,   arrow size, default is 1250
  showArrow: true,                          // optional,    boolean,  show arrow, default is true
  zoomNear: 75,                             // optional,    number,   max zoom in, default is 75
  zoomFar: 16000                            // optional,    number,   max zoom out, default is 16000
}

events

You can use instance.events.on(eventName, callback) to add event listener.

  • tick: triggered after every d3-force tick event
  • end: triggered after d3-force end event

License

MIT

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.