config

This is certainly the only extra piece of documentation that you will ever need


Here you can consult a detailed description of each graph configurable property as well as the default values of those properties.

Note about performance
Some of the properties have a major performance impact when toggled while rendering graphs of medium or large dimensions (hundreds or thousand of elements). These properties are marked with 🚅🚅🚅.
tip to achieve smoother interactions you may want to set staticGraph to true

Note about granularity
Some of the properties listed in the Node section are marked with 🔍🔍🔍. This means that this properties have a higher level of granularity. These properties can be defined in the graph payload at a node level. (sample payload below)

const graph = {
    nodes: [
        {
            id: 'id',
            color: 'red',   // only this node will be red
            size: 300,      // only this node will have size 300
            type: 'diamond' // only this node will have 'diamond' shape
        }
    ],
    links: [...]
};

Graph global configurations

config
Parameters
automaticRearrangeAfterDropNode (boolean = false) 🚅🚅🚅 when true performing a node drag and drop should automatically rearrange all nodes positions based on new position of dragged node (note: staticGraph should be false).
height (number = 400) the height of the (svg) area where the graph will be rendered.
highlightBehavior (boolean = false) 🚅🚅🚅 when user mouse hovers a node that node and adjacent common connections will be highlighted. All the remaining nodes and links assume opacity value equal to highlightOpacity .
highlightOpacity (number = 1) this value is used to highlight nodes in the network. The lower the value the more the less highlighted nodes will be visible (related to highlightBehavior ).
maxZoom (number = 8) max zoom that can be performed against the graph.
minZoom (number = 0.1) min zoom that can be performed against the graph.
panAndZoom (boolean = false) 🚅🚅🚅 pan and zoom effect when performing zoom in the graph, a similar functionality may be consulted here .
staticGraph (boolean = false) when setting this value to true the graph will be completely static, thus all forces and drag events upon nodes will produce not effect. Note that, if this value is true the nodes will be rendered with the initial provided x and y coordinates (links positions will be automatically set from the given nodes positions by rd3g), no coordinates will be calculated by rd3g or subjacent d3 modules.
width (number = 800) the width of the (svg) area where the graph will be rendered.
node (Object) node object is explained in next section.

Node level configurations

Name Description
node.color string (default '#d3d3d3') 🔍🔍🔍 this is the color that will be applied to the node if no color property is found inside the node itself (yes you can pass a property 'color' inside the node and that color will override the this default one ).
node.fontSize number (default 10) font-size property for all nodes' labels.
node.fontWeight string (default 'normal') font-weight property for all nodes' labels.
node.labelProperty string (default 'id') this is the node property that will be used in runtime to fetch the label content. You just need to add some property (e.g. firstName) to the node payload and then set node.labelProperty to be 'firstName' .
node.mouseCursor string (default 'pointer') cursor property for when some node is mouse hovered.
node.opacity number (default 1) by default all nodes will have this opacity value.
node.renderLabel boolean (default true) when set to false no labels will appear along side nodes in the graph.
node.size number (default 200) 🔍🔍🔍 defines the size of all nodes.
node.strokeColor string (default 'none') color for the stroke of each node.
node.strokeWidth number (default 1.5) the width of the all node strokes.
node.symbolType string (default 'circle') 🔍🔍🔍 the shape of the node. Use the following values under a property type inside each node (nodes may have different types, same as colors):
  • 'circle'
  • 'cross'
  • 'diamond'
  • 'square'
  • 'star'
  • 'triangle'
  • 'wye'

[note] react-d3-graph will map this values to d3 symbols (https://github.com/d3/d3-shape#symbols)

node.highlightColor string (default 'SAME') color for all highlighted nodes (use string 'SAME' if you want the node to keep its color in highlighted state).
node.highlightFontSize number (default 10) node.fontSize in highlighted state.
node.highlightFontWeight string (default 'normal') node.fontWeight in highlighted state.
node.highlightStrokeColor string (default 'SAME') node.strokeColor in highlighted state.
node.highlightStrokeWidth number (default 1.5) node.strokeWidth in highlighted state.
link (Object) link object is explained in the next section.

Link level configurations

Name Description
link.color string (default '#d3d3d3') the color for links.
link.opacity number (default 1) the default opacity value for links.
link.semanticStrokeWidth boolean (default false) when set to true all links will have "semantic width" , this means that the width of the connections will be proportional to the value of each link. This is how link strokeWidth will be calculated:
strokeWidth += (linkValue * strokeWidth) / 10;
link.strokeWidth number (default 1.5) strokeWidth for all links.
link.highlightColor string (default '#d3d3d3') links color in highlight state.
Example
// A simple config that uses some properties
const myConfig = {
    highlightBehavior: true,
    node: {
        color: 'lightgreen',
        size: 120,
        highlightStrokeColor: 'blue'
    },
    link: {
        highlightColor: 'lightblue'
    }
};

// Sorry for the long config description, here's a potato 🥔.

Node/helper

Some methods that help no the process of rendering a node.

Node/helper
Static Members
_convertTypeToD3Symbol(typeName)
buildSvgSymbol(size, symbolTypeDesc)

Graph

Graph component is the main component for react-d3-graph components, its interface allows its user to build the graph once the user provides the data, configuration (optional) and callback interactions (also optional). The code for the live example (https://danielcaldas.github.io/react-d3-graph/sandbox/index.html) can be consulted here https://github.com/danielcaldas/react-d3-graph/blob/master/sandbox/Sandbox.jsx

new Graph(props: any)

Extends React.Component

Parameters
props (any)
Example
import { Graph } from 'react-d3-graph';

// Graph payload (with minimalist structure)
const data = {
    nodes: [
      {id: 'Harry'},
      {id: 'Sally'},
      {id: 'Alice'}
    ],
    links: [
        {source: 'Harry', target: 'Sally'},
        {source: 'Harry', target: 'Alice'},
    ]
};

// The graph configuration
const myConfig = {
    highlightBehavior: true,
    node: {
        color: 'lightgreen',
        size: 120,
        highlightStrokeColor: 'blue'
    },
    link: {
        highlightColor: 'lightblue'
    }
};

// Graph event callbacks
const onClickNode = function(nodeId) {
     window.alert('Clicked node', nodeId);
};

const onMouseOverNode = function(nodeId) {
     window.alert('Mouse over node', nodeId);
};

const onMouseOutNode = function(nodeId) {
     window.alert('Mouse out node', nodeId);
};

const onClickLink = function(source, target) {
     window.alert(`Clicked link between ${source} and ${target}`);
};

<Graph
     id='graph-id' // id is mandatory, if no id is defined rd3g will throw an error
     data={data}
     config={myConfig}
     onClickNode={onClickNode}
     onClickLink={onClickLink}
     onMouseOverNode={onMouseOverNode}
     onMouseOutNode={onMouseOutNode} />
Instance Members
_onDragEnd
_onDragMove
_onDragStart
_setHighlighted
_tick
_zoomConfig
_zoomed
onMouseOutNode
onMouseOverNode
pauseSimulation
resetNodesPositions
restartSimulation
_validateGraphData(data)
_initializeGraphState(data)
_graphForcesConfig()

Graph/helper

Offers a series of methods that isolate logic of Graph component.

Graph/helper
Static Members
_buildLinkProps(source, target, nodes, links, config, linkCallbacks, someNodeHighlighted, transform)
_buildNodeProps(node, config, nodeCallbacks, someNodeHighlighted, transform)
buildGraph(nodes, nodeCallbacks, links, linkCallbacks, config, someNodeHighlighted, transform)
createForceSimulation(width, height)
initializeNodes(graphNodes)

Node

Node component is responsible for encapsulating node render.

new Node()

Extends React.Component

Example
const onClickNode = function(nodeId) {
     window.alert('Clicked node', nodeId);
};

const onMouseOverNode = function(nodeId) {
     window.alert('Mouse over node', nodeId);
};

const onMouseOutNode = function(nodeId) {
     window.alert('Mouse out node', nodeId);
};

<Node
    id='nodeId'
    cx=22
    cy=22
    fill='green'
    fontSize=10
    dx=90
    fontWeight='normal'
    label='label text'
    opacity=1
    renderLabel=true
    size=200
    stroke='none'
    strokeWidth=1.5
    type='square'
    className='node'
    onClickNode={onClickNode}
    onMouseOverNode={onMouseOverNode}
    onMouseOutNode={onMouseOutNode} />
Instance Members
handleOnClickNode
handleOnMouseOverNode
handleOnMouseOutNode

Link component is responsible for encapsulating link render.

new Link()

Extends React.Component

Example
const onClickLink = function(source, target) {
     window.alert(`Clicked link between ${source} and ${target}`);
};

<Link
    source='idSourceNode'
    target='idTargetNode'
    x1=22
    y1=22
    x2=22
    y2=22
    strokeWidth=1.5
    stroke='green'
    className='link'
    opacity=1
    onClickLink={onClickLink} />
Instance Members

utils

Offers a series of generic methods for object manipulation, and other operations that are common across rd3g such as error logging.

utils
Static Members
_isPropertyNestedObject(o, k)
isDeepEqual(o1, o2, _depth)
isObjectEmpty(o)
merge(o1, o2, _depth)
throwErr(component, msg)