GitHub - ecomfe/vue-echarts: Vue.js component for Apache ECharts™. (original) (raw)

Vue ECharts

Vue ECharts

Vue.js component for Apache ECharts™.

npm version test coverage View demo 前往中文版

Still using Vue 2? Read v7 docs here →

Installation & usage

npm

npm install echarts vue-echarts

Example

Demo →

To keep your bundle size small, we recommend manually importing the components and charts you need from ECharts. To make this easier, we’ve created an import code generator. Simply paste your option code into the tool, and it will generate the exact import statements for you.

A modal for generating ECharts import code. The left panel shows a chart configuration in JSON, while the right panel displays TypeScript import statements for ECharts charts and components.

Try it →

But if you really want to import the whole ECharts bundle without having to import modules manually, just add this in your code:

CDN

Drop <script> inside your HTML file and access the component via window.VueECharts.

Demo →

const app = Vue.createApp(...)

// register globally (or you can do it locally) app.component('VChart', VueECharts)

See more examples here.

Props

Smart update

Events

You can bind events with Vue's v-on directive.

Note

Only the .once event modifier is supported as other modifiers are tightly coupled with the DOM event system.

Vue ECharts support the following events:

See supported events in the ECharts API reference →

Native DOM events

As Vue ECharts binds events to the ECharts instance by default, there is some caveat when using native DOM events. You need to prefix the event name with native: to bind native DOM events.

Provide / inject

Vue ECharts provides provide/inject API for theme, init-options, update-options and loading-options to help configuring contextual options. eg. for theme you can use the provide API like this:

Composition API

import { THEME_KEY } from "vue-echarts"; import { provide } from "vue";

provide(THEME_KEY, "dark");

// or provide a ref const theme = ref("dark"); provide(THEME_KEY, theme);

// getter is also supported provide(THEME_KEY, () => theme.value);

Options API

import { THEME_KEY } from 'vue-echarts' import { computed } from 'vue'

export default { { provide: { [THEME_KEY]: 'dark' } } }

// Or make injections reactive export default { data() { return { theme: 'dark' } }, provide() { return { [THEME_KEY]: computed(() => this.theme) } } }

Methods

Note

The following ECharts instance methods aren't exposed because their functionality is already provided by component props:

Slots new

Vue ECharts allows you to define ECharts option's tooltip.formatter and toolbox.feature.dataView.optionToContent callbacks via Vue slots instead of defining them in your option object. This simplifies custom HTMLElement rendering using familiar Vue templating.

Slot naming convention

Example mappings:

The slot props correspond to the first parameter of the callback function.

Usage

{{ param.seriesName }} {{ param.value[0] }}
<!-- Tooltip on xAxis -->
<template #tooltip-xAxis="params">
  <div>X-Axis : {{ params.value }}</div>
</template>

<!-- Data View Content -->
<template #dataView="option">
  <table>
    <thead>
      <tr>
        <th v-for="(t, i) in option.dataset[0].source[0]" :key="i">
          {{ t }}
        </th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="(row, i) in option.dataset[0].source.slice(1)" :key="i">
        <th>{{ row[0] }}</th>
        <td v-for="(v, i) in row.slice(1)" :key="i">{{ v }}</td>
      </tr>
    </tbody>
  </table>
</template>

Example →

Note

Slots take precedence over the corresponding callback defined in props.option.

Static methods

Static methods can be accessed from echarts itself.

CSP: style-src or style-src-elem

If you are both enforcing a strict CSP that prevents inline <style> injection and targeting browsers that don't support the CSSStyleSheet() constructor, you need to manually include vue-echarts/style.css.

Migration to v8

Note

Please make sure to read the upgrade guide for ECharts 6 as well.

The following breaking changes are introduced in vue-echarts@8:

Local development

Open http://localhost:5173 to see the demo.

For testing and CI details, see tests/TESTING.md.

Notice

The Apache Software Foundation Apache ECharts, ECharts, Apache, the Apache feather, and the Apache ECharts project logo are either registered trademarks or trademarks of the Apache Software Foundation.