Giter Site home page Giter Site logo

palantir / plottable Goto Github PK

View Code? Open in Web Editor NEW
2.9K 309.0 223.0 73.9 MB

:bar_chart: A library of modular chart components built on D3

Home Page: http://plottablejs.org/

License: MIT License

JavaScript 19.50% CSS 0.57% HTML 0.84% TypeScript 79.07% Shell 0.01%
chart charting-library typescript chart-component javascript plottable d3 plots flexible octo-correct-managed

plottable's Introduction

Plottable CircleCI Join the chat at https://gitter.im/palantir/plottable

Plottable is a library of chart components for creating flexible, custom charts for websites. It is built on top of D3.js and provides higher-level pieces, like plots, gridlines, and axes. As such, it's easier to quickly build charts than with D3, and the charts are much more flexible than standard-template charts provided by charting libraries. You can think of Plottable as a "D3 for Charts" โ€” it is not a charting library but rather a library of chart components. Check out examples of Plottable on our website's examples page.

Philosophy

Plottable's core philosophy is "Composition over Configuration", so a lot of the API flexibility is in choosing which Components to use, and how to arrange them in Tables, rather than setting high-level properties on the charts. If you find you need a feature that doesn't exist, consider writing a new Component that implements the functionality. This way, you can get your custom functionality and still benefit from the rest of the library.

Plottable is used and developed at Palantir Technologies. It's developed in TypeScript and distributed in ES5 JavaScript.

Quick Start

Upgrading to v1.0.0

If you are upgrading from a pre-v1.0.0 version of Plottable to v1.0.0 or later, please use the Upgrade Guide on the wiki.

Upgrading to v2.0.0

Check out the full list of changes between v1.16.2 and v2.0.0.

Upgrading to v3.0.0

Check out the full list of changes between v2.9.0 and v3.0.0.

We Want To Help!

If you run into any problems using Plottable, please let us know. We want Plottable to be easy-to-use, so if you are getting confused, it is our fault, not yours. Create an issue and we'll be happy to help you out, or drop by our Gitter room.

Development

  • Clone the repo
  • Install local dependencies yarn install
  • Run yarn build to build the dependencies
  • Run yarn start and it will spin up a server (pointed at http://localhost:9999) and begin compiling the typescript code
  • Navigate to http://localhost:9999/quicktests/ and choose a directory to view visual tests

Contributing

  • Write your code
  • Add tests for new functionality, and please add some quicktests too
  • Run yarn test and verify it completes with no warnings or failures
  • Submit a pull request and sign the CLA when prompted by our bot

plottable's People

Contributors

adidahiya avatar aicioara avatar ashwinr avatar bluong avatar bmalehorn avatar calvinfernandez avatar crmorford avatar dbt avatar dependabot[bot] avatar derekcicerone avatar endrjuskr avatar fent avatar hellochar avatar istarnx avatar jtlan avatar kvilon avatar leebyp avatar lewin avatar lg5293 avatar michael-yx-wu avatar okal avatar peterfaiman avatar rcchen avatar svc-excavator-bot avatar teamdandelion avatar terekim avatar thelastnode avatar themadcreator avatar yunhaolucky avatar ztsai avatar

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  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

plottable's Issues

Re-evaluate layout logic

We've found a few cases where the no-circular-dependency rule is constraining us, particularly for wrapping text / coming up with category bar renderer labels.

We've also separated layout code from rendering code in a way that wasn't done in ROW, so that having a circular reference in the layout code is not so bad from a perf standpoint.

After the demo, let's consider if we want to change our approach here.

0.1.2 Unit Testing

This milestone will be focused on getting solid test coverage over our functionality and locking down our api

Add gridlines

We'll want to sync them up with axes ticks somehow. (Maybe give tick responsibility to the scale? Maybe have gridlines take a dependency on axes? Not sure.)

Handle different examples in a less hackish way

Right now all the examples are concatenated into one 'examples.js' file. To determine which example is run, there is an outer if (window.demoName == "something") surrounding the entire example. The demoName attribute on window is set in a script tag at the top of the html.

Needless to say this is super hackish and I would rather have separate scripts for the different examples. However having Grunt build them separately in a naive fashion with our current tooling leads to pollution of the src directory by js crap. Need to fix this as part of the great Grunt tooling fix.

Set initial ranges with some padding

... so that the maximum Y value isn't at the top of the chart. There appears to be padding already on some of the examples, even though there doesn't appear to be any code responsible for doing so...

Improve rowWeight() and colWeight()

These have to get subclassed every time we want to make one of them read-only, for classes with fixed weights on one or both sides.

Figure out some way to flag some of these properties as fixed so we don't have to repeat ourselves.

Update grunt watch so it does less work

Right now a change anywhere (eg in example code) causes everything to recompile which is inefficient since the upstream code does not depend on it.
Ideally we only recompile the file that is changed so compilation time doesn't grow in size of project.
I think having a build/ directory where we keep compiled objects around might allow for some speedup.

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.