Giter VIP home page Giter VIP logo

cljplot's Introduction

logo

clojure2d.charts

THIS IS WIP/POC A "no web-based" pure JVM Clojure library for 2d charts, inspired by D3, Vega and R (ggplot2/lattice/facet).

NOTE about API

Please note that current way of creating charts is very low level. All of this nasty steps will be finally hidden from user perspective.

Usage

Currently there are no easy to use functions nor data DSL (help needed here). Still everything is done manually.

See sketches folder for examples

Internals

How does it work?

Short term plan

  • More chart types (+ - easier; - - harder):
    • heatmaps (various grids) (+)
    • point clouds (log and linear rendering) (+)
    • contours (-), flow fields (+)
    • categorical x categorical plots (scatter plot matrix (+)
    • stacked area/stream
    • parallel / hive (+/-)
    • radial charts, like pie (+), sunburst (-), radial tree (-)
    • arc(?) (+)
    • markers: line, text, etc...
  • Labels / legends / gradients / palettes
  • Higher level API
    • single function for each chart type (easier)
    • faceting/lattice (harder)
  • cleaning configuration mess

Long term plan / wishlist

  • Enable other renderers (create dispatch layer)
  • Data DSL(?)
  • geo maps
  • elements of UpSet
  • signal processing / time series (partially done)
  • annotations
  • grid of charts / subplots (with independent axes)
  • kind of interactivity
  • chart styles (now everything is blueish)

Known issues

  • grid, axes sometimes don't match (1-2px shift). This is due to rounding errors and axes rotations
  • still no labels, no legends
  • overlapping ticks (add some heuristics to use smaller fonts and smaller number of ticks)
  • chart configuration needs to be reviewed, still not consistent
  • no higher level functions/macros
  • no DSL for data manipulation, and no plan to make it (task for others!)
  • deep nesting is really nasty to configure and for data preparation :/ (lattice of stacked horizontally stacked bars...)
  • merging nesting extents is not working correctly (in lattice)
  • true is, there are some labels for lattice, quick and dirty
  • do not layer over histograms (bins mismatch)...
  • still something is wrong with time scale

Why?

So, why another chart library, when you can use insert any name here In my case, the main obstacle was the ability to save hundreds of charts without using any display (web or java frame). One can say: jfreechart! I can say: try to generate heatmaps... Every library I've found had some issues or produces ugly result or was web based or was notebook based or... So I fell into the lisp curse and I'm writing my own.

License

Copyright © 2018 FIXME

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

cljplot's People

Contributors

genmeblog avatar

Watchers

 avatar  avatar  avatar

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.