• Stars
    star
    183
  • Rank 210,154 (Top 5 %)
  • Language
    Rust
  • License
    MIT License
  • Created over 2 years ago
  • Updated 10 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Force Directed Graph Drawing Library

fdg

A Force-Directed Graph Library for Rust.

screenshot

View Demo Online

The goal of this project is to provide a force-directed graph drawing framework for Rust, as well as 2D and 3D visualizers/renderers that work on the web and desktop. It's built on top of the popular petgraph Rust library for interaction with already existing datasets in Rust.

In the simplest terms, the crates in this project allow you to take a graph and turn it into a pretty picture.

Crates

Name Version Docs License Description
fdg-sim Latest version Documentation MIT Runs the layout engine (simulation) and manages the position of nodes.
fdg-macroquad Latest version Documentation GPL-3.0 A demo visualizer that lets you interact with the graph in real time. (View Online)
fdg-img Latest version Documentation GPL-3.0 A simple SVG renderer for your graphs.
fdg-wasm NPM Package View Readme MIT A simple Webassembly wrapper of fdg-sim for use in Javascript.

Stability Note/Future Plans:

Note: There are some parts of this library that are certainly not as polished as I'd like them to be. My Rust API (and calculus) abilities have improved quite a bit since I first wrote this library, and there is a lot of room for improvement.

While the library is certainly usable, there are a few things that I'd like to address in an upcoming 1.0+:

  • Lack of "state of the art" (post 1996) force algorithms such as ForceAtlas2.
  • Only simple Euler method instead of more stable RK4 or Leapfrog integration.
  • Unnecessary Clone requirement for Node data (and associated "hot-clones" 😬).
  • Opaque Force struct containing a function pointer instead of an idiomatic Force trait.
  • Buggy node dragging in fdg-macroquad.
  • Awkwardly worded documentation.
  • Unpolished WASM API.
  • Sometimes buggy/inflexible DOT/GML/jsongraph parsers.
  • Broken self-connected nodes.

Resources

More Repositories

1

claui

A GUI generator for clap-rs using egui
Rust
99
star
2

wasm4-raycaster

A demo raycaster for the WASM-4 engine.
HTML
90
star
3

libretranslate-rs

The LibreTranslate API client for Rust.
Rust
64
star
4

egui-themer

Create egui themes.
Rust
52
star
5

grapher

A simple graphing calculator
Rust
16
star
6

webster-rs

A Rust library containing an offline version of webster's dictionary.
Rust
14
star
7

materia-rofi-theme

This is a rofi theme based on the Materia GTK Theme
12
star
8

ipgeolocate

Simple Rust library for IP geolocation.
Rust
12
star
9

gtktranslate

A Simple GTK Translator
Rust
11
star
10

wasm4-playground

Write retro video games in assemblyscript.
Svelte
10
star
11

ipgeo

A pure-rust CLI tool that finds the location of IP addresses.
Rust
10
star
12

maze-wanderer

A simple first person raycasting demo
Rust
9
star
13

thesaurus-rs

An offline Rust thesaurus library.
Rust
9
star
14

artist-constellations.art

View your Spotify artists in 3D constellations
Svelte
7
star
15

nominatim-rs

REST API bindings for the reverse geocoding service.
Rust
6
star
16

grantshandy.github.io

My website.
HTML
6
star
17

thes

A 100% Offline Thesaurus CLI Tool
Rust
6
star
18

rplayer

Command Line Audio Player
Rust
5
star
19

motivate

Rust
3
star
20

eliza-discord

This is a discord implementation of the early 'chatbot' program ELIZA.
Rust
2
star
21

gemway

A Gemini proxy which provides a simple LaTeX-like web interface to the Geminiverse.
Rust
2
star
22

simplestbrowser

A super simple web browser based off of webkitGTK that compiles to a minuscule 238KB.
Rust
2
star
23

minesweeper

A rust implementation of minesweeper that runs entirely in your terminal
Rust
2
star
24

disk-persist

Rust
1
star
25

libretrans

A command line tool for translating using the libretranslate API
Rust
1
star
26

kanye-rs

KAAS (Kanye As A Service)
Rust
1
star
27

w4-paint

A simple (12K) paint application I made in Rust while learning the wasm4 game engine.
Rust
1
star
28

textrip

Get perspective accurate textures for 3D modeling and graphics from any image in an easy to use website.
JavaScript
1
star
29

htmxchat

A simple anonymous chat application using htmx, axum, and maud.
Rust
1
star
30

coindesk-rs

A Bitcoin price index API powered by coindesk.
Rust
1
star
31

image-noise

Create image textures of noise in Rust.
Rust
1
star
32

imei

An IMEI number validator implemented in Rust.
Rust
1
star
33

gid

A command line interface for google tasks.
Rust
1
star
34

postcode-rs

Postcode & Geolocation API for the UK
Rust
1
star