GithubHelp home page GithubHelp logo

sgratzl / chartjs-chart-funnel Goto Github PK

View Code? Open in Web Editor NEW
10.0 2.0 6.0 7 MB

Chart.js Funnel chart

Home Page: http://www.sgratzl.com/chartjs-chart-funnel/

License: MIT License

JavaScript 17.79% TypeScript 82.21%
chartjs chartjs-plugin funnel-chart funnel-plots javascript typescript

chartjs-chart-funnel's Introduction

Chart.js Funnel

License: MIT NPM Package Github Actions

Chart.js module for charting funnel plots. This plugin extends with a new char type funnel.

A Funnel chart is a variant of a bar chart where the bar shrinks on one side to the size of the next bar. In addition, they are usually centered giving the visual impression of a funnel.

funnel chart

Works great with https://github.com/chartjs/chartjs-plugin-datalabels

funnel chart with labels

Related Plugins

Check out also my other chart.js plugins:

Install

npm install chart.js chartjs-chart-funnel

Usage

see Examples

and Open in CodePen

Styling

Trapezoid Elements are Bar elements and provide the same coloring options. In addition, see TrapezoidElementOptions custom option with respect to shrinking behavior.

In addition, the FunnelController has the following options FunnelController to customize the alignment of the chart.

ESM and Tree Shaking

The ESM build of the library supports tree shaking thus having no side effects. As a consequence the chart.js library won't be automatically manipulated nor new controllers automatically registered. One has to manually import and register them.

Variant A:

import Chart, { LinearScale, CategoryScale } from 'chart.js';
import { FunnelController, TrapezoidElement } from 'chartjs-chart-funnel';

// register controller in chart.js and ensure the defaults are set
Chart.register(FunnelController, TrapezoidElement, LinearScale, CategoryScale);

const chart = new Chart(document.getElementById('canvas').getContext('2d'), {
  type: 'funnel',
  data: {
    labels: ['Step 1', 'Step 2', 'Step 3', 'Step 4'],
    datasets: [
      {
        data: [0.7, 0.66, 0.61, 0.01],
      },
    ],
  },
});

Variant B:

import { FunnelChart } from 'chartjs-chart-funnel';

const chart = new FunnelChart(document.getElementById('canvas').getContext('2d'), {
  data: {
    //...
  },
});

Development Environment

npm i -g yarn
yarn install
yarn sdks vscode

Building

yarn install
yarn build

chartjs-chart-funnel's People

Contributors

dependabot[bot] avatar sgratzl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

chartjs-chart-funnel's Issues

Smoothing out the edges

Hey,

Thanks a lot for developing this chartjs addon, super helpful!

Do you have any pointers to achieve this style?
CleanShot 2024-04-14 at 12 40 23@2x

The closest I've managed to get with chartjs and your addon is this below, so only the smooth edges remains:
CleanShot 2024-04-14 at 12 44 45@2x

Do you think there's a way to achieve this with your library?

thank you!

Funnel is horizontal rather than expected vertical

Just out of the box using the sample code from the README, the funnel is draw horizontally (left to right) instead of vertically (top to bottom) as I expected. I am not sure if this is a bug or a feature and I should manually force a rotation onto it, but I didn't see that mentioned in the README so I thought I'd check.

To Reproduce

  1. Create the chart with the sample code from the README.
  2. Chart is now drawn horziontally, from left to right.
  3. This is also seen at the examples: https://www.sgratzl.com/chartjs-chart-funnel/examples/align.html

Expected behavior
Chart is drawn vertically, from top to bottom.

EDIT: Setting options.indexAxis: 'y' fixes this behavior. If this is as intended, then it might be a nice addition to the docs.

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.