All Projects → davidpiegza → Graph Visualization

davidpiegza / Graph Visualization

Licence: other
3D graph visualization with WebGL / Three.js

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Graph Visualization

Nyc Buildings
An interactive 3D visualization of the all the buildings in Manhattan.
Stars: ✭ 338 (-33.33%)
Mutual labels:  3d, webgl
Roygbiv
A 3D engine for the Web
Stars: ✭ 499 (-1.58%)
Mutual labels:  3d, webgl
Graphosaurus
3D graph viewer powered by WebGL (three.js)
Stars: ✭ 340 (-32.94%)
Mutual labels:  graph, webgl
Audiofabric
a 3d music visualization
Stars: ✭ 327 (-35.5%)
Mutual labels:  3d, webgl
Vue Gl
Vue.js components rendering 3D WebGL graphics reactively with three.js
Stars: ✭ 434 (-14.4%)
Mutual labels:  3d, webgl
Vivagraphjs
Graph drawing library for JavaScript
Stars: ✭ 3,442 (+578.9%)
Mutual labels:  graph, webgl
Taro
A lightweight 3D game engine for the web.
Stars: ✭ 345 (-31.95%)
Mutual labels:  3d, webgl
Glas
WebGL in WebAssembly with AssemblyScript
Stars: ✭ 278 (-45.17%)
Mutual labels:  3d, webgl
Vizceral
WebGL visualization for displaying animated traffic graphs
Stars: ✭ 3,871 (+663.51%)
Mutual labels:  graph, webgl
Beam
✨ Expressive WebGL
Stars: ✭ 383 (-24.46%)
Mutual labels:  3d, webgl
React Postprocessing
📬 postprocessing for react-three-fiber
Stars: ✭ 311 (-38.66%)
Mutual labels:  3d, webgl
Webglstudio.js
A full open source 3D graphics editor in the browser, with scene editor, coding pad, graph editor, virtual file system, and many features more.
Stars: ✭ 4,508 (+789.15%)
Mutual labels:  3d, webgl
Online3dviewer
Online 3D Model Viewer
Stars: ✭ 312 (-38.46%)
Mutual labels:  3d, webgl
Magnum
Lightweight and modular C++11 graphics middleware for games and data visualization
Stars: ✭ 3,728 (+635.31%)
Mutual labels:  3d, webgl
Glmaps
Data visualization examples and tutorials from scratch. 数据可视化示例代码集与新手学习教程。
Stars: ✭ 288 (-43.2%)
Mutual labels:  3d, webgl
Webgl2examples
Rendering algorithms implemented in raw WebGL 2.
Stars: ✭ 353 (-30.37%)
Mutual labels:  3d, webgl
Enable3d
🕹️ Standalone 3D Framework / Physics for three.js (using ammo.js) / 3D extension for Phaser 3
Stars: ✭ 271 (-46.55%)
Mutual labels:  3d, webgl
Webgl Fundamentals
WebGL lessons that start with the basics
Stars: ✭ 3,315 (+553.85%)
Mutual labels:  3d, webgl
Xbsjearthui
XbsjEarthUI是基于Cesium和EarthSDK的三维GIS/BIM的UI模板,可以基于此定制自己的三维App
Stars: ✭ 373 (-26.43%)
Mutual labels:  3d, webgl
Lume
Create CSS3D/WebGL applications declaratively with HTML. Give regular DOM elements shadow and lighting.
Stars: ✭ 445 (-12.23%)
Mutual labels:  3d, webgl

Notice: This repo is not maintained anymore but PRs are still welcome.

Graph-Visualization

This project is about 3D graph visualization with WebGL. The aim of this project is to evaluate the possibilities of graph drawing in WebGL.

It uses Three.js for drawing and currently supports a force directed layout.

Run the example

You can see the examples at http://davidpiegza.github.io/Graph-Visualization/index.html or:

  1. Clone or download the project
  2. Open the index.html in a WebGL-compatible browser

The examples folder contains all examples.

Project Description

The project consists of

  • a graph structure
  • a graph layout implementation
  • and a graph drawing implementation

Graph Structure

This is implemented in src/graph.js.

Usage:

  // create a graph with maximum number of nodes (optional)
  var graph = new GRAPHVIS.Graph({limit: 100});
  // create nodes with an id
  var node1 = new GRAPHVIS.Node(1);
  var node2 = new GRAPHVIS.Node(2);
  // add nodes to the graph
  graph.addNode(node1);
  graph.addNode(node2);
  // create edge between nodes
  graph.addEdge(node1, node2);

Node:

A node has the properties

  • ID
  • nodesTo, Array with connected nodes
  • nodesFrom, Array with connected nodes
  • position, Object for x, y, z position, default is {}
  • data, Object with further properties, e.g. properties for a graph layout

For more details have a look at the source code.

Graph Layout

A graph layout has the basic structure:

  var Layout = Layout || {};
  Layout.ForceDirected = function(graph, options) {
    this.init = function() {
      ...
    };

    this.generate = function() {
      ...
    };
  }

The init() function is called after graph creation, the generate() function is called on each render-call.

The graph layout gets the created graph and calculates new positions for the nodes. The generate() function is called repeatedly, so there must be a stop condition after finished calculation.

The graph layout may extend the nodes and edges with custom properties in the data object.

See force-directed-layout.js for example usage.

Contribution

It would be great to have more examples of force-directed graphs or other 3d graph layouts. To add a new example, just copy one of the existing examples, add a new Drawing object and update the index.html.

Check out the open issues for a specific task.

This project uses Grunt to run several tasks in development. You should have npm and grunt installed. To install grunt run

npm install -g grunt-cli

And to install all dependencies run

npm install

For more info check the Grunt - Getting started guide.

If you added some changes, run grunt to check the code.

Changelog

See releases.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].