Giter Club home page Giter Club logo

nodebox's Introduction

NodeBox 3

NodeBox is a new software application for creating generative art using procedural graphics and a new way to approach graphic design.

Highlights:

  • Node based -- the software uses a non-destructive workflow where every operation is represented by a visual block of code.
  • Open to extend -- look and change the source of every code block.
  • Python or Clojure -- Nodes can be written in popular dynamic programming languages.

For downloads, documentation and the forum, visit the website:

https://nodebox.net/

Build Status

Building on Mac

NodeBox requires the Java JDK, and Homebrew (for Ant and Maven)

NodeBox uses Ant and Maven to build a running version. Install these first:

brew install ant maven

Then from the Terminal, run:

git clone https://github.com/nodebox/nodebox.git
cd nodebox
ant run

# To create a full app (the build will be in dist/mac):
ant dist-mac

Building on Windows

From the command prompt, run:

# Setup the correct environment variables
# (Modify these paths to your installation directories.)
set JAVA_HOME=c:\java\jdk
set ANT_HOME=c:\java\ant
set WIX_HOME=c:\java\wix
set PATH=%PATH%;%ANT_HOME%\bin;%WIX_HOME%\bin

git clone https://github.com/nodebox/nodebox.git

cd nodebox
ant run

# To create a full app (the MSI will be in dist/windows):
# Set the correct version in src/main/resources/version.properties
ant dist-win

Building on Linux

Ubuntu Linux

Or other distributions based on APT package system:

sudo apt install git openjdk-11-jdk ant
git clone https://github.com/nodebox/nodebox.git
cd nodebox
ant run

Fedora Linux

Or other distributions based on YUM package system:

sudo yum install git java-11-openjdk ant
git clone https://github.com/nodebox/nodebox.git
cd nodebox
ant run

Arch Linux

Nodebox has an aur package for distributions based on Arch linux : nodebox-git

yaourt -S nodebox-git

or

git clone https://aur.archlinux.org/nodebox-git.git
cd nodebox-git
makepkg
sudo pacman -U nodebox-git-[version-number]-any.pkg.tar.xz

You can then launch nodebox as any desktop application, or by running the nodebox command on terminal.

Building on FreeBSD/PC-BSD

Just use pkg:

sudo pkg install git openjdk-11 apache-ant
git clone https://github.com/nodebox/nodebox.git
cd nodebox
ant run

nodebox's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nodebox's Issues

Make the geometry library immutable

Because the data structures are re-used between nodes, a lot of defensive copying is going on in the nodes to make sure cached geometry is not changed.

By using immutable geometry, this can be avoided, and we can multi-thread the code more easily.

When the prototype is changed, writes happen in wrong order.

  1. Create a node, called "alpha"
  2. Create a node with the "alpha" node as the prototype.
  3. Move the prototype.

If you save the file, "alpha" will be written first, causing the file not to open.

This is only a problem for corevector where we actually use generator / filter as the prototype.

Keyboard Support Suggestions

Move focus between panes.

[Cmd + [] & [Cmd + ]]

This functionality is similar to DWM window manager (Linux) or iTerm2 (OS X) for moving between inner-window sections.

Manipulate nodes within the Network Pane.

Arrow Keys (optionally w/ Shift & Alt modifiers to them 10 or .01 grid units)

As mentioned previously, this would mirror both the existing behavior of number sliders in the Parameters/Metadata pane and functionality found within Adobe Creative Suite applications.

Rewind & Play hotkeys.

[Cmd + P] to toggle playing/paused states, [Cmd + R] or [Cmd + Shift + P] to rewind

This would also facilitate a more rapid workflow within NodeBox (when working with animations).

Quickly duplicate nodes with the mouse.

Dragging and Dropping while holding down [Alt]

Another functionality tidbit common to Adobe's Creative Suite. Truly depends on the target audience of the NodeBox software.

Multiple nodes can only be selected when dragging from top left corner

In order to select multiple nodes in the network pane, you can drag-select with a mouse. However, this only works when starting the drag in the top left corner of the selection. Starting the drag-selection in anywhere else (for example, clicking and moving the mouse cursor towards the top right) does nothing.

  • Nodebox version: 2.0.981
  • OSX 10.6.8

Handles are broken

The corevector.ndbx file no longer contains references to the handles.

Add parameters that can reconfigure node ports

Some way of operating require different ports. For example, there are many ways to sort geometry, with different types of port. (seed is only useful for random sort, while offset is only useful for shift sort).

Design a Parameter object that invokes a function that creates and deletes Ports from a Node object. Drop connections to ports that no longer exist, and maintain existing connections.

Also figure out if we always use the same function, and what happens to ports (are they only hidden temporarily? Are the parameters passed as well?)

Parameters cannot be connected like Ports can.

Problems with data stamping in templates

Hello,

I'm following the Data Visualization using Data Stamping tutorial using NodeBox 2.2.1 on Windows XP.

In certain places I cannot use stamp as it returns always the default value.

Steps to reproduce:

  1. follow the tutorial
  2. at step seven, don't hardcode the 14 value in the Points value of line1 but try using stamp("data_row_count", 1)
  3. an error occurs: nodebox.node.ProcessingError: Error occurred while updating parameter <Parameter line1.points (int)>: Parameter points: value 1 is too small. (minimum=2.0)Caused by:
    java.lang.IllegalArgumentException: Parameter points: value 1 is too small. (minimum=2.0)

Looks like stamp connot find a value for "data_row_count" and uses the default value.

Strange things:

  • if I deselect Toggle Expression while stamp("data_row_count", 1) is set, the Points value is set to 14. So, in a way, it works.
  • it works as expected if I put stamp("data_row_count", 1) as Text value of a textpath node

Tell me if you need additional details.

Cheers,
Giacomo

Bug: "Toggle expression" does not trigger a shape update

Steps to reproduce:

  1. Create an Ellipse node
  2. Click on "Toggle expression" for parameter "width"
  3. Enter the expression "stamp("foobar", 50)" and press ENTER
    An ellipse is displayed with height 100 and width 50
  4. Click on "Toggle expression" for parameter "width" again.
    Parameter "width" shows 100 again.
    BUT: the ellipse is still displayed with height 100 and width 50.

New Nodes Can Overlap Existing Ones

Repro Steps:

  1. Launch NodeBox 2.2.1 on OS X (Lion) 10.7.2
  2. Create a "Align" node
    • Create a New Node ([Cmd+Shift+N])
    • Press [Enter]
  3. Repeat step 2 until a new node is created on top of an existing node
  4. Observer node placement in the Network pane

Actual Results:

A node can be place directly in the same position as a previous node, overlapping & obscuring it.

Expected Results:

New nodes are at least placed away from existing nodes for clarity. And at most, placed adjacent, or near, to recently created nodes to facilitate easier connection using the mouse.

OS X: 10.7.2
Nodebox version: 2.2.1
Java: 1.6.0_29-b11-402-11M3527

Current file closed after losing focus

When losing focus (eg minimising, then maximising) the current file appears to be closed (all of the panes are empty).

  • Linux 2.6.32-22-generic 36-Ubuntu
  • Sun Java(TM) SE Runtime Environment (build 1.6.0_19-b04)
  • Nodebox 2.0 snapshot

Compound Node Context Menu Labels

Repro Steps:

  1. Launch NodeBox 2.2.1 on OS X (Lion) 10.7.2
  2. Create a "Compound" node
    • Create a new node ([Cmd+Shift+N])
    • Begin typing "Comp"
    • Press [Enter]
  3. Create a "Rect" node
    • Create a New Node ([Cmd+Shift+N])
    • Begin typing "Rect"
    • Press [Enter]
  4. Click & drag from the output port of the "rect1" to the input port of the "compound1"
  5. Observe labels on contextual menu which appears

Actual Results:

The context menu reads:

shape
shapeB

Expected Results:

As with the "Place" node, the labels read:

Shape
Compound

or

Shape A
Shape B

OS X: 10.7.2
Nodebox version: 2.2.1
Java: 1.6.0_29-b11-402-11M3527

Tab Doesn't Move Cursor Focus Across Some Elements

Repro Steps:

  1. Launch NodeBox 2.2.1 on OS X (Lion) 10.7.2
  2. Create a "Textpath" node
    • Create a New Node ([Cmd+Shift+N])
    • Begin typing "Textp"
    • Press [Enter]
  3. Click within the "Text" textField within the Parameters/Metadata pane
  4. Press [Tab] 3 times

Actual Results:

The selection traverses over the "Font" and "Center" parameters then disappears, skipping the "Size" parameter after "Font" and "X," "Y," "Width," etc. after "Align."

Expected Results:

The selection lands on draggable selector for the skipped fields before moving to the next, allowing for keyboard input using the up, down, left and right arrow keys. Color field would logically still be skipped. When the selection reaches the last last parameter of the pane, the selection advances to the fist selectable element in the next sequential pane (the most recent node within the "Network" pane, in the default pane arrangement). [Shift+Tab] allows the selection to advance in reverse. This would facility a more rapid workflow within NodeBox.

OS X: 10.7.2
Nodebox version: 2.2.1
Java: 1.6.0_29-b11-402-11M3527

Code pane missing in nb3

Tried both the downloadable installer and building from git master branch (as of 2012-06-11). Is the code pane not yet supported, or is this a bug?

Add aggregate node.

Aggregates on one (?) column and sums / averages the other, numeric columns.

  • Aggregation methods: sum, avg, ?

Pushing Rewind Causes Animation to Stop

Repro Steps:

  1. Launch NodeBox 2.2.1 on OS X (Lion) 10.7.2
  2. Click the "(>) Play" button below the Source pane
  3. Click the "(|<) Rewind" button adjacent
  4. Observe the frame count timer to the right

Actual Results:

The frame count timer resets when the "Rewind" button is clicked while animation is playing.

Expected Results:

Animation can be rewound while continuing play to facilite repeated observation of the beginning of an animation. This would also facility a more rapid workflow within NodeBox.

Discovered following the "Basic Animation" tutorial: http://beta.nodebox.net/documentation/tutorial/animation.html .

OS X: 10.7.2
Nodebox version: 2.2.1
Java: 1.6.0_29-b11-402-11M3527

OS X Leopard install with Java 1.6

I'm running Java 64 bit 1.6.0_20 on 10.5.8 on an Intel MacBook and happily using git, but (true, on my system only as far as I know!) this is the result of following the OS X directions under INTSTALL.txt:

$ ant dist-mac
Buildfile: build.xml

properties:

init:

compile:
[javac] Compiling 117 source files to /Users/deveritt/src/nodebox/build/prod
[javac] /Users/deveritt/src/nodebox/src/nodebox/client/PlatformUtils.java:163: cannot find symbol
[javac] symbol : variable Desktop
[javac] location: class nodebox.client.PlatformUtils
[javac] if (Desktop.isDesktopSupported()) {
[javac] ^
[javac] /Users/deveritt/src/nodebox/src/nodebox/client/PlatformUtils.java:166: cannot find symbol
[javac] symbol : variable Desktop
[javac] location: class nodebox.client.PlatformUtils
[javac] Desktop.getDesktop().browse(uri);
[javac] ^
[javac] /Users/deveritt/src/nodebox/src/nodebox/graphics/Text.java:175: cannot find symbol
[javac] symbol : method isEmpty()
[javac] location: class java.lang.String
[javac] if (text.isEmpty())
[javac] ^
[javac] Note: /Users/deveritt/src/nodebox/src/nodebox/client/syntax/SyntaxStyle.java uses or overrides a deprecated API.
[javac] Note: Recompile with -Xlint:deprecation for details.
[javac] Note: Some input files use unchecked or unsafe operations.
[javac] Note: Recompile with -Xlint:unchecked for details.
[javac] 3 errors

BUILD FAILED
/Users/deveritt/src/nodebox/build.xml:89: Compile failed; see the compiler error output for details.

I might be missing something obvious, but - if there's a minimum requirements list (10.6 or Java > 1.6.0), it would be good to add something to INSTALL.txt

malware

Avira message upon download of nodebox 2.2.1:

'A virus or unwanted program 'ADWARE/Adware.Gen' was found in file 'C:\Users\Susan\AppData...\nodebox-2.2.1-setup.exe'

New Node Hotkey Does Not Dismiss "spotlight"

Repro Steps:

  1. Launch NodeBox 2.2.1 on OS X (Lion) 10.7.2
  2. Create a "Compound" node
    • Create a New Node ([Cmd+Shift+N])
    • Begin typing "Comp"
    • Press [Enter]

Actual Results:

The new is created below the new node "spotlight" opacity effect.

Expected Results:

Creating a new node, either by clicking the suggested button, or by using the hotkey ([Cmd + N]) causes the "spotlight" effect to dismiss.

OS X: 10.7.2
Nodebox version: 2.2.1
Java: 1.6.0_29-b11-402-11M3527

Group node doesn't work (NB3)

I am unable to make more than one connection to the input of the Group node.
Attempting to make a second connection merely replaces the existing one.

(I assume Group is the new name for Merge.)

Make a better switcher between code and data.

The problem is that if data can only be represented as data (e.g. CSV), the default view is the ugly last resort viewer. In this case, we want to switch to the data panel immediately and disable the viewer option.

But we can look at it differently. If we make the viewer / data into a menu, we can have many options. We can have multiple visualisers for color, for example. If there's only option available, like in the CSV case, we can choose it automatically and disable the menu.

"Dropdown" Parameters Do Not Seek

Repro Steps:

  1. Launch NodeBox 2.2.1 on OS X (Lion) 10.7.2
  2. Create a "Copy" node
    • Create a New Node ([Cmd+Shift+N])
    • Begin typing "cop"
    • Press [Enter]
  3. Select the "Order" dropdown menu in Parameters/Metadata pane
  4. Begin typing "Sca"

Actual Results:

The cursor on the contextual menu that appears does not seek a menu items matching the typed value (eg. "Scale Rot Trans" or "Scale Trans Rot" in response to the typed "Sca").

Expected Results:

Selecting any item for any node in the Parameters/Metadata pane which is a dropdown menu (the "Copy" node's "Order" parameter or the "Textpath" node's "Font" parameter) allows the user to begin typing to have the nearest matching desired menu item selected. This would facility a more rapid workflow within NodeBox.

OS X: 10.7.2
Nodebox version: 2.2.1
Java: 1.6.0_29-b11-402-11M3527

Cannot load examples on Ubuntu

cloned repo, ran ant run and nodebox started up. Used the File menu to open an example. After selecting a file I am returned to nodebox but it has not loaded the example.

java version "1.7.0_03"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.10
Release: 10.10
Codename: maverick

Tried this on a different machine, this time I got a popup error message:

nodebox.util.LoadException: Error while loading l_system.ndbx: Unsupported version 0.9: this file is too old or too new.
at nodebox.node.NodeLibrary.upgradeTo(Unknown Source)
at nodebox.node.NodeLibrary.upgrade(Unknown Source)
at nodebox.client.NodeBoxDocument.load(Unknown Source)
at nodebox.client.Application.openDocument(Unknown Source)
at nodebox.client.NodeBoxMenuBar$OpenAction.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
at java.awt.Component.processMouseEvent(Component.java:6289)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6054)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4652)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4482)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:617)
at java.awt.EventQueue$2.run(EventQueue.java:615)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Copy Stamping Expression not 'sticking'

If the value of the Copy Stamping Expression is edited directly in the text field, then another node is selected, on selecting the first node again, the new value for the Copy Stamping Expression reverts to the original value before editing. Allow direct editing in the text field? (OS X 10.5.8).

Cmd+N Loses Functionality After Closing a Document

Repro Steps:

  1. Launch NodeBox 2.2.1 on OS X (Lion) 10.7.2
  2. Close the new document by
    • Press [Cmd + W]
    • Selecting File > Close
    • Clicking red (x) button
  3. Press [Cmd + N] to create a new document

Actual Results:

[Cmd + N] does not have functionality. However, selecting File > New works.

Expected Results:

Hotkeys/keyboard shortcuts listed in the applications UI function as stated.

Closing & re-opening the application solves this issue.

OS X: 10.7.2
Nodebox version: 2.2.1
Java: 1.6.0_29-b11-402-11M3527

Nodes Can't Be Moved Using the Keyboard

Repro Steps:

  1. Launch NodeBox 2.2.1 on OS X (Lion) 10.7.2
  2. Create a "Align" node
    • Create a New Node ([Cmd+Shift+N])
    • Press [Enter]
  3. Press various arrow keys with the new node selected in the Network pane

Actual Results:

Selected nodes cannot be moved.

Expected Results:

Arrow keys can be used to reposition nodes within the Network pane; a single arrow key press-release moving the selected node 1 point on the pane's grid. Optionally (as with the draggable numbers within the Parameters/Metadata pane discussed here: http://beta.nodebox.net/documentation/using/gui.html) Shift and Alt modifiers to the arrows keys could be used to reposition nodes 10 or .01 positions on the pane's grid. This behavior is common to Adobe creative suite apps such as Photoshop and Illustrator and is functionality professional designers/Adobe product users will appreciate. This would also facility a more rapid workflow within NodeBox.

OS X: 10.7.2
Nodebox version: 2.2.1
Java: 1.6.0_29-b11-402-11M3527

Bug/Feature Request: support undo of code modifications

To reproduce:

  1. create a "Code" node
  2. modify its Python code in the source pane
  3. pressing Ctrl+Z does not undo the latest code modifications but the insertion of the "Code" node instead => the Code node vanishes, the code and all its changes are lost

Please extend undo to code modifications, too

Add more screenshots please

Hi, the nodebox app looks interesting, would be nice to have more screenshots on the project's site.

Thanks!

Window > Layout Has No Options

Repro Steps:

  1. Launch NodeBox 2.2.1 on OS X (Lion) 10.7.2
  2. Hover the mouse over the menu bar > Window > Layout

Actual Results:

No further menus or options appear despite indicative ">" icon on the "Layout" option.

Expected Results:

Several options of alternative (to the default) window pane arrangement(s) appear.

OS X: 10.7.2
Nodebox version: 2.2.1
Java: 1.6.0_29-b11-402-11M3527

"New Node" Spotlight After Familiarity is Achieved

Repro Steps:

  1. Launch NodeBox 2.2.1 on OS X (Lion) 10.7.2
  2. Observe the "(+) New Node" button's "spotlight"

Actual Results:

Even after achieving a familiarity with the NodeBox program, the spotlight continues to appear when creating a new document or opening the application. This functionality appears indicative of an inexperienced user.

Expected Results:

The new node "spotlight" only appears:

  • The first several times the application is opened.
  • If a newly created document is the first one opened.
  • The application has not been used for over a month.

This is a low severity issue as the spotlight is easily dismissed by clicking anywhere within the application.

OS X: 10.7.2
Nodebox version: 2.2.1
Java: 1.6.0_29-b11-402-11M3527

Data Stamping in NodeBox 3

Hi,

I'm evaluating NodeBox for data visualisation. Using NodeBox 3.0a14 and foliowing this tutorial on the alpha site. I can't find a Datastamp node in the list of available nodes.

Is this an issue of out-of-date documentation, or a missing node?

Thanks.

Redesign the node selection pane

The list of nodes has increased a lot and the current panel is unworkable. Design a new system for easily creating new nodes, preferably in categories.

Do Automatic Conversions

Convert automatically between types.

When you connect a floating-point number to something that takes in an integer (like an "amount" port), you get an error.

NB should automatically convert the float to an int, rounding the number off in the process.

Conversion should work just like a node. They take in lists, and return lists of equal, or different size.

For example, a Geometry object can be converted to something that takes points. The converter node will take in a list of Geometry objects and return a list of Points, ready to be consumed by a node that takes Points.

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.