vue-apexcharts vs vue-chartjs vs vue-echarts
Vue.js Chart Libraries
vue-apexchartsvue-chartjsvue-echartsSimilar Packages:

Vue.js Chart Libraries

These libraries provide Vue.js components for integrating various charting solutions into Vue applications. They simplify the process of rendering charts by wrapping popular charting libraries, allowing developers to create interactive and visually appealing data visualizations with ease. Each library has its own strengths, catering to different needs in terms of features, performance, and ease of use.

Npm Package Weekly Downloads Trend

3 Years

Github Stars Ranking

Stat Detail

Package
Downloads
Stars
Size
Issues
Publish
License
vue-apexcharts01,344461 kB8a year agoMIT
vue-chartjs05,72076.1 kB296 months agoMIT
vue-echarts010,654160 kB16 months agoMIT

Feature Comparison: vue-apexcharts vs vue-chartjs vs vue-echarts

Chart Types

  • vue-apexcharts:

    vue-apexcharts supports a wide range of chart types including line, bar, area, pie, radar, and more. It provides built-in options for customizing each chart type, making it easy to create visually appealing and informative graphics that suit various data presentations.

  • vue-chartjs:

    vue-chartjs offers a selection of common chart types such as line, bar, radar, doughnut, and polar area charts. While it covers the essentials, it may not support as many advanced chart types as other libraries, making it suitable for simpler visualizations.

  • vue-echarts:

    vue-echarts excels in providing a vast array of chart types, including complex visualizations like candlestick, heatmap, and treemap. This makes it a powerful choice for applications that require diverse and intricate data representations.

Customization

  • vue-apexcharts:

    vue-apexcharts allows extensive customization options through its API, enabling developers to modify chart properties, styles, and behaviors easily. This flexibility makes it suitable for projects that require a unique look and feel for their charts.

  • vue-chartjs:

    vue-chartjs provides basic customization options through Chart.js, allowing for adjustments in colors, labels, and tooltips. However, it may be limited in comparison to more feature-rich libraries, making it less suitable for highly customized visualizations.

  • vue-echarts:

    vue-echarts offers deep customization capabilities, allowing developers to manipulate nearly every aspect of the charts. With ECharts' rich configuration options, users can create tailored visualizations that meet specific design and functionality requirements.

Performance

  • vue-apexcharts:

    vue-apexcharts is optimized for performance, handling large datasets efficiently without significant lag. It leverages ApexCharts' rendering capabilities to ensure smooth interactions and quick updates, making it suitable for real-time data visualizations.

  • vue-chartjs:

    vue-chartjs performs well with moderate datasets, but may experience performance issues with very large datasets due to Chart.js's rendering approach. It is best used for applications with less intensive data visualization needs.

  • vue-echarts:

    vue-echarts is designed for high performance, capable of rendering large datasets quickly and efficiently. Its virtual scrolling and lazy loading features make it an excellent choice for applications that require handling complex data visualizations.

Ease of Use

  • vue-apexcharts:

    vue-apexcharts is user-friendly, with a straightforward API that allows developers to implement charts with minimal setup. Its documentation provides clear examples, making it accessible for both beginners and experienced developers.

  • vue-chartjs:

    vue-chartjs is known for its simplicity and ease of integration, making it a great choice for developers new to charting libraries. Its straightforward API and clear documentation help users get started quickly.

  • vue-echarts:

    vue-echarts may have a steeper learning curve due to its extensive features and customization options. However, once mastered, it provides powerful tools for creating sophisticated visualizations, making it suitable for developers willing to invest time in learning.

Community and Support

  • vue-apexcharts:

    vue-apexcharts has a growing community and is well-supported with regular updates and a wealth of resources available online. This makes it easier to find help and examples when needed.

  • vue-chartjs:

    vue-chartjs benefits from the popularity of Chart.js, which has a large community and extensive documentation. This support network can be invaluable for troubleshooting and finding best practices.

  • vue-echarts:

    vue-echarts is backed by the ECharts community, which is robust and active. The library is frequently updated, and there are numerous resources available for learning and troubleshooting, making it a reliable choice for developers.

How to Choose: vue-apexcharts vs vue-chartjs vs vue-echarts

  • vue-apexcharts:

    Choose vue-apexcharts if you need a simple and powerful way to integrate ApexCharts into your Vue application. It is particularly suitable for projects that require a wide variety of chart types and responsive designs, as it offers a rich set of features with minimal configuration.

  • vue-chartjs:

    Opt for vue-chartjs if you are looking for a straightforward integration of Chart.js with Vue. It's ideal for developers who prefer a lightweight library with a focus on simplicity and ease of use, making it a good choice for smaller projects or those new to charting libraries.

  • vue-echarts:

    Select vue-echarts if you need a highly customizable and feature-rich charting solution. It is best for applications that require complex visualizations and interactivity, as it leverages ECharts' extensive capabilities for large datasets and intricate charts.

README for vue-apexcharts

License build ver

Vue.js wrapper for ApexCharts to build interactive visualizations in vue.

Download and Installation

Installing via npm
npm install --save apexcharts
npm install --save vue-apexcharts

If you're looking for Vue 3.x.x compatibile component, check-out vue3-apexcharts

Usage

import VueApexCharts from 'vue-apexcharts'
Vue.use(VueApexCharts)

Vue.component('apexchart', VueApexCharts)

To create a basic bar chart with minimal configuration, write as follows:

<template>
   <div>
     <apexchart width="500" type="bar" :options="chartOptions" :series="series"></apexchart>
   </div>
</template>

export default {
    data: function() {
      return {
        chartOptions: {
          chart: {
            id: 'vuechart-example'
          },
          xaxis: {
            categories: [1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998]
          }
        },
        series: [{
          name: 'series-1',
          data: [30, 40, 35, 50, 49, 60, 70, 91]
        }]
      }
    },
};

This will render the following chart

How do I update the chart?

Simple! Just change the series or any option and it will automatically re-render the chart.
Click on the below example to see this in action

<template>
   <div class="app">
     <apexchart width="550" type="bar" :options="chartOptions" :series="series"></apexchart>
     <div>
       <button @click="updateChart">Update!</button>
    </div>
   </div>

</template>
export default {
    data: function() {
      return {
        chartOptions: {
          chart: {
            id: 'vuechart-example',
          },
          xaxis: {
            categories: [1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998],
          },
        },
        series: [{
          name: 'series-1',
          data: [30, 40, 45, 50, 49, 60, 70, 81]
        }]
      }
    },
    methods: {
      updateChart() {
        const max = 90;
        const min = 20;
        const newData = this.series[0].data.map(() => {
          return Math.floor(Math.random() * (max - min + 1)) + min
        })

        const colors = ['#008FFB', '#00E396', '#FEB019', '#FF4560', '#775DD0']

        // Make sure to update the whole options config and not just a single property to allow the Vue watch catch the change.
        this.chartOptions = {
          colors: [colors[Math.floor(Math.random()*colors.length)]]
        };
        // In the same way, update the series option
        this.series = [{
          data: newData
        }]
      }
    }
};

Important: While updating the options, make sure to update the outermost property even when you need to update the nested property.

✅ Do this

this.chartOptions = {...this.chartOptions, ...{
    xaxis: {
        labels: {
           style: {
             colors: ['red']
           }
        }
    }
}}

❌ Not this

this.chartOptions.xaxis = {
    labels: {
        style: {
          colors: ['red']
        }
    }
}}

Props

PropTypeDescription
series*ArrayThe series is an array which accepts an object in the following format. To know more about the format of dataSeries, checkout Series docs on the website.
type*Stringline, area, bar, pie, donut, scatter, bubble, heatmap, radialBar, candlestick
widthNumber/StringPossible values for width can be 100% or 400px or 400
heightNumber/StringPossible values for height can be 100% or 300px or 300
optionsObjectThe configuration object, see options on API (Reference)

Methods

You don't actually need to call updateSeries() or updateOptions() manually. Changing the props will automatically update the chart. You only need to call these methods to update the chart forcefully.

MethodDescription
updateSeriesAllows you to update the series array overriding the existing one
updateOptionsAllows you to update the configuration object
toggleSeriesAllows you to toggle the visibility of series programatically. Useful when you have custom legend.
appendDataAllows you to append new data to the series array.
addTextThe addText() method can be used to draw text after chart is rendered.
addXaxisAnnotationDraw x-axis annotations after chart is rendered.
addYaxisAnnotationDraw y-axis annotations after chart is rendered.
addPointAnnotationDraw point (xy) annotations after chart is rendered.

How to call the methods mentioned above?

<template>
  <div class="example">
    <apexchart ref="demoChart" width="500" :options="chartOptions" :series="series"></apexchart>
  </div>
</template>

<script>
  functionName: function() {
    this.$refs.demoChart.updateOptions({ colors: newColors })
  },
</script>

How to call methods of ApexCharts without referencing the chart element?

Sometimes, you may want to call methods of the core ApexCharts library from some other place, and you can do so on this.$apexcharts global variable directly. You need to target the chart by chart.id while calling this method

Example

this.$apexcharts.exec('vuechart-example', 'updateSeries', [{
  data: [40, 55, 65, 11, 23, 44, 54, 33]
}])

In the above method, vuechart-example is the ID of chart, updateSeries is the name of the method you want to call and the third parameter is the new Series you want to update.

More info on the .exec() method can be found here

All other methods of ApexCharts can be called the same way.

What's included

The repository includes the following files and directories.

vue-apexcharts/
├── dist/
│   └── vue-apexcharts.js
└── src/
    ├── ApexCharts.component.js
    ├── Utils.js
    └── index.js

Running the examples

Basic Examples are included to show how to get started using ApexCharts with Vue easily.

To run the examples,

cd example
npm install
npm run serve

Development

Install dependencies

npm install

Bundling

npm run build

Supporting ApexCharts

ApexCharts is an open source project.
You can help by becoming a sponsor on Patreon or doing a one time donation on PayPal

Become a Patron

License

Vue-ApexCharts is released under MIT license. You are free to use, modify and distribute this software, as long as the copyright header is left intact.