• Home
  • PHP
  • MySQL
  • Laravel
  • Demos
  • HTML
  • jQuery
  • Framework
  • Request Tutorial
PHP Lift
  • Home
  • Demos
  • Advertisement
PHP Lift
  • Home
  • PHP
  • MySQL
  • Laravel
  • Demos
  • HTML
  • jQuery
  • Framework
  • Request Tutorial
  • Follow
    • Facebook
    • Twitter
    • Google+
    • Pinterest
    • Youtube
    • Instagram
    • RSS
How to Create Bar Chart Race in JavaScript
Home
JavaScript

How to Create Bar Chart Race in JavaScript

March 11th, 2026 Huzoor Bux JavaScript 0 comments

Facebook Twitter Google+ LinkedIn Pinterest

In this article, I am going to show you that How to Create Bar Chart Race in JavaScript very easily. You must watch many bar chart data visualization videos in this tutorial you can make data visualization with bar chart race. I have found this code snippet on codepen.io by Carlos and chart created by amCharts Library.

What if you show this type of chart as your companies sales reports and profits your boss might love it, just kidding 🙂

DEMO
DOWNLOAD CODE

amCharts Libraries needs to be included:

<script src="https://www.amcharts.com/lib/4/core.js"></script>

<script src="https://www.amcharts.com/lib/4/charts.js"></script>

<script src="https://www.amcharts.com/lib/4/themes/animated.js"></script>

Charts Data for graphs visualization:



var allData = {

      "2014": [{

          "languages": "Objective-C",

          "PUSHES": 1.862

        },

        {

          "languages": "Go",

          "PUSHES": 1.973

        },

        {

          "languages": "Shell",

          "PUSHES": 2.813

        },



        {

          "languages": "C#",

          "PUSHES": 2.849

        },

        {

          "languages": "C",

          "PUSHES": 6.083

        },

        {

          "languages": "C++",

          "PUSHES": 7.372

        },

        {

          "languages": "Ruby",

          "PUSHES": 7.948

        },

        {

          "languages": "PHP",

          "PUSHES": 9.956

        },

        {

          "languages": "Java",

          "PUSHES": 12.396

        },

        {

          "languages": "Python",

          "PUSHES": 14.054

        },

        {

          "languages": "JavaScript",

          "PUSHES": 21.636

        },

        {

          "languages": "TypeScript",

          "PUSHES": 0.359

        }

      ],

      "2021": [{

          "languages": "Objective-C",

          "PUSHES": 0.328



        },

        {

          "languages": "Go",

          "PUSHES": 4.639



        },

        {

          "languages": "Shell",

          "PUSHES": 4.564



        },



        {

          "languages": "C#",

          "PUSHES": 2.654



        },

        {

          "languages": "C",

          "PUSHES": 3.463



        },

        {

          "languages": "C++",

          "PUSHES": 8.222



        },

        {

          "languages": "Ruby",

          "PUSHES": 4.051



        },

        {

          "languages": "PHP",

          "PUSHES": 5.323



        },

        {

          "languages": "Java",

          "PUSHES": 10.498



        },

        {

          "languages": "Python",

          "PUSHES": 14.183



        },

        {

          "languages": "JavaScript",

          "PUSHES": 28.653



        },

        {

          "languages": "TypeScript",

          "PUSHES": 4.94



        }

      ]

    }

Complete javascript Code:

    am4core.useTheme(am4themes_animated);

    am4core.globalAdapter.addAll(2)

    var chart = am4core.create("chartdiv", am4charts.XYChart);

    chart.padding(40, 40, 40, 40);

    chart.numberFormatter.numberFormat = "#,###.";

    var label = chart.plotContainer.createChild(am4core.Label);

    label.x = am4core.percent(97);

    label.y = am4core.percent(95);

    label.horizontalCenter = "right";

    label.verticalCenter = "middle";

    label.dx = -15;

    label.fontSize = 50;



    var playButton = chart.plotContainer.createChild(am4core.PlayButton);

    playButton.x = am4core.percent(97);

    playButton.y = am4core.percent(95);

    playButton.dy = -2;

    playButton.verticalCenter = "middle";

    playButton.events.on("toggled", function (event) {

      if (event.target.isActive) {

        play();

      } else {

        stop();

      }

    })



    var stepDuration = 4000;



    var categoryAxis = chart.yAxes.push(new am4charts.CategoryAxis());

    categoryAxis.renderer.grid.template.location = 0;

    categoryAxis.dataFields.category = "languages";

    categoryAxis.renderer.minGridDistance = 1;

    categoryAxis.renderer.inversed = true;

    categoryAxis.renderer.grid.template.disabled = false;



    var valueAxis = chart.xAxes.push(new am4charts.ValueAxis());

    valueAxis.min = 0;

    valueAxis.rangeChangeEasing = am4core.ease.linear;

    valueAxis.rangeChangeDuration = stepDuration;

    valueAxis.extraMax = 0.1;



    var series = chart.series.push(new am4charts.ColumnSeries());

    series.dataFields.categoryY = "languages";

    series.dataFields.valueX = "PUSHES";

    series.tooltipText = "{valueX.value}"

    series.columns.template.strokeOpacity = 0;

    series.columns.template.column.cornerRadiusBottomRight = 5;

    series.columns.maxColumns = 1

    series.columns.template.column.cornerRadiusTopRight = 5;

    series.interpolationDuration = stepDuration;

    series.interpolationEasing = am4core.ease.linear;

    var labelBullet = series.bullets.push(new am4charts.LabelBullet())

    labelBullet.label.horizontalCenter = "right";

    labelBullet.label.text = "{values.valueX.workingValue}";

    labelBullet.label.textAlign = "end";

    labelBullet.label.dx = -10;

    labelBullet.label.maxColumns = 1;

    chart.zoomOutButton.disabled = true;

    series.columns.template.adapter.add("fill", function (fill, target) {

      return chart.colors.getIndex(target.dataItem.index);

    });

    var year = 2014;

    label.text = year.toString();

    var interval;

    function play() {

      interval = setInterval(function () {

        nextYear();

      }, stepDuration)

      nextYear();

    }

    function stop() {

      if (interval) {

        clearInterval(interval);

      }

    }

    function nextYear() {

      year++



      if (year > 2021) {

        year = 2014;

        stop();

      }

      var newData = allData[year];

      var itemsWithNonZero = 0;

      for (var i = 0; i < chart.data.length; i++) { chart.data[i].PUSHES = (newData[i].PUSHES * 100000); if (chart.data[i].PUSHES > 0) {

          itemsWithNonZero++;

        }

      }

      if (itemsWithNonZero > 25) {

        itemsWithNonZero = 25

      }

      if (year == 2014) {

        series.interpolationDuration = stepDuration / 8;

        valueAxis.rangeChangeDuration = stepDuration / 8;

      } else {

        series.interpolationDuration = stepDuration;

        valueAxis.rangeChangeDuration = stepDuration;

      }



      chart.invalidateRawData();

      label.text = year.toString();



      categoryAxis.zoom({

        start: 0,

        end: itemsWithNonZero / categoryAxis.dataItems.length

      });

    }



    categoryAxis.sortBySeries = series;

    var allData = {} // you can add data here.



    chart.data = JSON.parse(JSON.stringify(allData[year]));

    categoryAxis.zoom({

      start: 0,

      end: 1 / chart.data.length

    });



    series.events.on("inited", function () {

      setTimeout(function () {

        playButton.isActive = true; // this starts interval

      }, 1000)

    })

Make your charts and share us in the comments box.

DEMO
DOWNLOAD CODE

I hope you liked this tutorial if you want more tutorials please request a tutorial here.

  • Tags
  • Chart
  • data visualisation
  • How to
  • javascript
Facebook Twitter Google+ LinkedIn Pinterest
Next article How do you become a highly-focused Software Developer
Previous article What's the Difference Between SQL and NoSQL

Huzoor Bux

I am a PHP Developer

Related Posts

7 Top Reasons to Learn JavaScript in 2021 Guide
March 19th, 2026

7 Top Reasons to Learn JavaScript in 2021

What's Vanilla JS? Why Vanilla JS? JavaScript
March 19th, 2026

What's Vanilla JS? Why Vanilla JS?

5 JavaScript Libraries You Can Use For Your Next Project JavaScript
March 19th, 2026

5 JavaScript Libraries You Can Use For Your Next Project

Leave a Reply Cancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Subscribe
Get new posts by email:
Powered by follow.it
Advertisement
Like us
Recent Posts
  • Top 7 Websites To Get Your First Paid Internship
  • Laravel Data and Value Objects: Harnessing the Power of Immutability and Consistency
  • Choosing the Right PHP Framework for Your Web Application: A Comprehensive Guide
  • Understanding the Factory Design Pattern in PHP: Simplifying Object Creation
  • 7 Top Reasons to Learn JavaScript in 2021
Categories
  • API
  • Bootstrap
  • Bot
  • CSS
  • CSS 3
  • Database
  • Designing
  • Framework
  • Guide
  • HTML
  • HTML 5
  • JavaScript
  • jQuery
  • Laravel
  • MySQL
  • Node.js
  • oAuth
  • Payment
  • PHP
  • Python
  • Social
  • Tips
  • Web 3.0
  • WordPress
Weekly Tags
  • PHP
  • How to
  • javascript
  • laravel
  • Web Development
  • jQuery
  • MYSQL
  • HTML to PDF
  • PHP framework
  • css
  • About
  • Privacy Policy
  • Back to top
© PHPLift.net. All rights reserved.