npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

chiasm

v0.3.0

Published

A browser based environment for interactive data visualizations.

Downloads

11

Readme

Chiasm

Build
Status Latest version: chiasm-v0.2.1.js

Chiasm is a browser based runtime environment and component architecture for interactive data visualizations. It allows plugins for data access, data transformation, and interactive visualization to be loaded and configured dynamically.

Here's a video that explains the history of the project: Story of the Chiasm Project, and here's another that covers the details of how Chiasm works and how you can use it: Introduction to Chiasm.

Examples

Feel free to add your own here and send a pull request!

| thumbnail | description | |---|---| | | Chiasm Boilerplate. | | | Bootstrap + Chiasm | | | Fusillade à Paris, a visualization of the attacks in Paris on November 13, 2015. | | | Migrant Deaths over Time.| | | Reactive Mixins for Visualizations. | | | Magic Heat Map. | | | Magic Bar Chart (AngularJS UI). | | | Magic Bar Chart (Browserified). | | | Thumbnails of visualization techniques from a 1984 paper. | | | Fundamental visualization techniques in Chiasm. | | | Focus + Context Area Charts.| | | Crossfilter & Chiasm.| | | Focus + Context Scatter Plots.| | | Focus + Context Scatter Plots with Color.| | | Download SVG data using SVGSaver. | | | Map & Globe based on Leaflet.js and This is a Globe. | | | Migrant Deaths Map with Leaflet. | | | A self-contained example showing the new v0.2.0 plugin API. | | | A demo of the Chiasm configuration editor and nested box layout. | | | An example Chiasm configuration with a bar chart and line chart. | | | The Chiasm kitchen sink (code), showing various configurations including scatter plot, line chart, and bar chart. | | | An example demonstrating linked views and having a common color scale. | | | A more complex example with linked views using Crossfilter and loading data from an API. |

Usage

You can include Chiasm in your page like this:

<script src="http://chiasm-project.github.io/chiasm/chiasm-v0.2.0.js"></script>

This will introduce a global variable Chiasm, which is a constructor function for instances of the Chiasm runtime environment.

Chiasm can also be used as an NPM module. To install, run

npm install -S chiasm

To use in your CommonJS JavaScript, you can require it like this:

var Chiasm = require("chiasm");

Components

The subproject chiasm-component defines a common base for Chiasm components.

Several components are also subprojects under github.com/chiasm-project:

There are also the following other components that exist in various examples:

There is a collection of components in the v0.1.9 archive branch. These will eventually be ported to the v0.2.0 API, and moved into their own separate repositories.

Presentations on Chiasm

Background

The core concept of this project is that interactive graphics, particularly data visualizations, can be instantiated, configured with data, arranged on the screen, and coupled together to produce interactive linked views.

A JSON configuration structure defines the entire state of a Chiasm application. The configuration refers to plugins by name, which are invoked to instantiate instances of components. Configuration changes can be made at runtime, and Chiasm will propagate the changes through the system. The JSON configuration also updates in response to changes in the state of the component's Model at runtime.

With visualizations, this means that the state users arrived at by interacting with the system (customizing visualization parameters, changing the columns visualized, or changing colors) can be serialized. This makes it possible to build a system that stores and retrieves editable Chiasm configurations.

Configuration Structure and Runtime Environment

A configuration is a JSON object encapsulating an application state. This configuration contains specifications for a set of runtime components, each of which has:

  • a unique name (called the "alias" of the component),
  • an associated plugin that creates the runtime component, and
  • a key-value dictionary specifying the state of the runtime component.

This organization allows a dynamic configuration structure to drive the state of the application, and also allows changes resulting from user interactions with runtime components to be propagated back to the configuration.

Runtime Diagram

This diagram illustrates that

  • Plugins create runtime components.
  • Changes in configuration propagate to runtime components.
  • Changes in runtime components propagate back to the configuration.

Related Work

This project is inspired by the following related work:

The word "Chiasm"

The optic nerve fibres on the nasal sides of each retina cross over to the opposite side of the brain via the optic nerve at the optic chiasm. -- Wikipedia

The Chiasm was a junction of interdimensional networks and corridors that allowed for instantaneous travel over long distances of space. - Dr. Who

Chiasm, this project, relates to the above meanings of the word "Chiasm" in that it connects the "brain" of data to the "eyes" of users through interactive visualization. When Chiasm is set up to use an interactive data transformation like Crossfilter, the visualization system is an intersection of multidimensional "corridors" in data space, and interacting with it allows users to rapidly pivot and navigate through the data.

Contributing

Any contributions or involvement is warmly welcome. Please give this repository a star if you think it's cool. If you're looking for ways to contribute, take a look at the issues to see if there are any you'd like to take on. If you have made something with Chiasm, please add it to the list of examples and submit a pull request. Also feel free to submit new issues for feature requests and bugs. For feedback and discussion in general, please post to the Chiasm Google Group.