ECharts:一个基于 JavaScript 的开源可视化图表库。

目录

效果

 一、介绍

 1、官方文档:Apache ECharts

2、官方示例

二、准备工作

1、安装依赖包

 2、示例版本 

三、使用步骤

1、在单页面引入 ' echarts '

2、指定容器并设置容器宽高

3、数据处理(关键点)

        1)设置dataset

数据集 - 概念篇 - 使用手册 - Apache ECharts       

        2)设置series

四、完整示例

  欢迎扫描下方二维码关注VX公众号


效果

 一、介绍

 1、官方文档:Apache ECharts

Apache EChartsApache ECharts,一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。https://echarts.apache.org/zh/index.html

2、官方示例

二、准备工作

1、安装依赖包

npm install echarts --save

 2、示例版本 

"echarts": "^5.4.2",

三、使用步骤

1、在单页面引入 ' echarts '

import * as echarts from "echarts";

注:上面的代码会引入 ECharts 中所有的图表和组件,如果你不想引入所有组件,也可以使用 ECharts 提供的按需引入的接口来打包必须的组件。详见官方文档:在项目中引入 ECharts - 入门篇 - Handbook - Apache ECharts

2、指定容器并设置容器宽高

<template>
  <div id="datasetMain"></div>
</template>

<script lang="ts" setup>
  import * as echarts from "echarts";

  initChart() {
    let chartDom = document.getElementById("datasetMain");
    let myChart = echarts.init(chartDom);
    let option;

    ...详见完整示例   
  };
</script>

<style lang="scss" scoped>
#datasetMain {
  width: 600px;
  height: 300px;
}
</style>

3、数据处理(关键点)

        1)设置dataset
dataset: {
  source: [
    ["product", "2012", "2013", "2014", "2015", "2016", "2017"],
    ["Milk Tea", 56.5, 82.1, 88.7, 70.1, 53.4, 85.1],
    ["Matcha Latte", 51.1, 51.4, 55.1, 53.3, 73.8, 68.7],
    ["Cheese Cocoa", 40.1, 62.2, 69.5, 36.4, 45.2, 32.5],
    ["Walnut Brownie", 25.2, 37.1, 41.2, 18, 33.9, 49.1],
  ],
},
数据集 - 概念篇 - 使用手册 - Apache ECharts       
        2)设置series
series: [
  {
    type: "bar", // 柱状图
    smooth: true, // 是否平滑曲线显示。
    // 如果是 boolean 类型,则表示是否开启平滑处理。如果是 number 类型(取值范围 0 到 1),表示平滑程度,越小表示越接近折线段,反之则反。设为 true 时相当于设为 0.5。
    seriesLayoutBy: "row", // 指定 dataset 的列(column)还是行(row)映射为图形系列(series)。这件事可以使用 series.seriesLayoutBy 属性来配置。默认是按照列(column)来映射。
    emphasis: { focus: "series" }, // 折线图的高亮状态。在高亮图形时,是否淡出其它数据的图形已达到聚焦的效果。支持如下配置:
    // 'none' 不淡出其它图形,默认使用该配置。
    // 'self' 只聚焦(不淡出)当前高亮的数据的图形。
    // 'series' 聚焦当前高亮的数据所在的系列的所有图形。
  },
  {
    type: "line", // 折线/面积图
    smooth: true,
    seriesLayoutBy: "row",
      emphasis: { focus: "series" },
    },
    {
      type: "line",
      smooth: true,
      seriesLayoutBy: "row",
      emphasis: { focus: "series" },
    },
    {
      type: "bar",
      smooth: true,
      seriesLayoutBy: "row",
      emphasis: { focus: "series" },
    },
  ],

四、完整示例

<template>
  <div id="datasetMain"></div>
</template>

<script lang="ts" setup>
import * as echarts from "echarts";
import { onMounted, nextTick } from "vue";

const initChart = () => {
  let chartDom = document.getElementById("datasetMain");
  let myChart = echarts.init(chartDom);
  let option;

  option = {
    legend: {},
    tooltip: {
      trigger: "axis",
      showContent: true,
      textStyle:{
        align: "left", // 文字左对齐
      }
    },
    dataset: {
      source: [
        ["product", "2012", "2013", "2014", "2015", "2016", "2017"],
        ["Milk Tea", 56.5, 82.1, 88.7, 70.1, 53.4, 85.1],
        ["Matcha Latte", 51.1, 51.4, 55.1, 53.3, 73.8, 68.7],
        ["Cheese Cocoa", 40.1, 62.2, 69.5, 36.4, 45.2, 32.5],
        ["Walnut Brownie", 25.2, 37.1, 41.2, 18, 33.9, 49.1],
      ],
    },
    xAxis: { type: "category" },
    yAxis: { gridIndex: 0 },
    grid: { top: "10%" },
    series: [
      {
        type: "bar", // 柱状图
        smooth: true, // 是否平滑曲线显示。
        // 如果是 boolean 类型,则表示是否开启平滑处理。如果是 number 类型(取值范围 0 到 1),表示平滑程度,越小表示越接近折线段,反之则反。设为 true 时相当于设为 0.5。
        seriesLayoutBy: "row", // 指定 dataset 的列(column)还是行(row)映射为图形系列(series)。这件事可以使用 series.seriesLayoutBy 属性来配置。默认是按照列(column)来映射。
        emphasis: { focus: "series" }, // 折线图的高亮状态。在高亮图形时,是否淡出其它数据的图形已达到聚焦的效果。支持如下配置:
        // 'none' 不淡出其它图形,默认使用该配置。
        // 'self' 只聚焦(不淡出)当前高亮的数据的图形。
        // 'series' 聚焦当前高亮的数据所在的系列的所有图形。
      },
      {
        type: "line", // 折线/面积图
        smooth: true,
        seriesLayoutBy: "row",
        emphasis: { focus: "series" },
      },
      {
        type: "line",
        smooth: true,
        seriesLayoutBy: "row",
        emphasis: { focus: "series" },
      },
      {
        type: "bar",
        smooth: true,
        seriesLayoutBy: "row",
        emphasis: { focus: "series" },
      },
    ],
  };

  option && myChart.setOption(option);
}

onMounted(async() => {
  await nextTick()
  initChart()
})

</script>

<style lang="scss" scoped>
#datasetMain {
  width: 600px;
  height: 300px;
}
</style>

  欢迎关注VX公众号:前端小知识营地

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐