Echarts

echarts是一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。ECharts最初由百度团队开源,并于2018年初捐赠给Apache基金会,成为ASF孵化级项目。
1.echarts语法

title : 标题组件

title: {
  text: '标题信息'
}

tooltip : 提示框组件

// 图表的提示
tooltip:{
  trigger:"鼠标悬停时的提示信息",
  formatter: "提示框浮层内容格式器,支持字符串模板和回调函数两种形式"
},

trigger各个值进行分析:

‘axis’:坐标轴触发,主要在柱状图,折线图等会使用。 
'item':图形形状触发,主要用在散点图、饼图等无类目轴的图标中使用。
'none':什么都不触发。

legend : 图例组件

// 图例
legend:{
  data:['A', 'B', 'C', 'D']
},  

xAxis : x轴

// x轴线
xAxis: {
  type: 'category',
  boundaryGap: false,
  data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
}, 
//type: ‘category’ 的意思是类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。
//boundaryGap: false 的意思是分隔线与缝隙。默认为true,这时,刻度只是作为分隔线,标签和数据点都会在两个 刻度 之间的带(band)中间。

yAxis : y轴

// y轴线 不需要修改,会自动根据x轴的数据进行修改。
yAxis:{
  type:"value"//可以不写
},  

series : 系列列表(重点)

series: [{
  barWidth:26,// 柱形宽度(折线图无)
  name: '',// legend对应的名称
  type: 'bar',// 图形类型
  stack: 'TUE',// 若多个值一样,则堆叠到一起
  data: [1,1,1,11],// 数值
  smooth: true, // 线条平滑展示,折线图起作用
  areaStyle: {},// 面积填充,折线图有效
  emphasis: {// 高亮
    label: {
      show: true,
      textStyle: {
        color: '#333333',
        fontWeight: 'bold'
      }
    }
  }
}] 

有多少个对象就有多少条线!!!
Type:图标类型 :bar 柱状图 、line折线图 、pie 饼形图

  • line折线图
(1)曲线图
加上smooth:true;就会变成曲线图
(2)面积图
加上areaStyle:{fill:“#f70”} 会变成面积图
  • pie饼形图
 (1)加上radius:[80,50] 会变成环形图

name: 系列名称,用于tooltip的显示,legend的图例筛选变化
stack:数据堆叠。 如果设置相同值,则会数据堆叠。
data:用于绘制图标的数据 必须是一个数组数据
比如:data:[12,30,45,66]
可以是一个多字段对象,只能用name和value
比如:

data:[
         {name:"js",value:90},
         {name:"html",value:85},
         {name:"jq",value:90},
         {name:"vue",value:50},
         ]
  • radius、center、roseType的设置与使用 饼状图

radius : [“10%”,“70%”] 如果是百分比一定要加双引号。
radius : [50,100] 如果是像素值,可以不用加双引号。
radius : [“10%”,“70%”] 表示内圆半径为10%;外圆半径为70%。
center: [“50%”,“50%”] 表示图形的位置水平垂直居中。
roseType: “radius” (半径模式) 或者 roseType: “area”(面积模式)
stack:"任意字符串" 表示多组不同数据时 相同数据会重叠

2.Echarts在vue中的应用
安装echarts
npm install echarts
引入echarts
import * as echarts from 'echarts';
Echarts的容器:

<!--  为 ECharts 准备一个具备高宽的 DOM 容器-->
    <div id="char1" style="width: 50%;height:300px;display: flex;border: 1px solid #ccc">
</div>

基本格式:

// 实例化echarts
// 创建一个echarts实例  echarts会把生成的图标加载到该容器中
let char5 = echarts.init(document.getElementById("容器id"))
// 定义配置项
let option = {
  // 图表的标题
  title:{
    text:"图标的标题"
  },
  // 图表的提示
  tooltip:{},
  // 图例
  legend:{data:["睡眠时长"]},
  // x轴线  横轴的图表数据
  xAxis:{data:["周一","周二","周三","周四","周五","周六","周日"]},
  // y轴线
  yAxis:{},
  // 构成画面的元素
  series: [{
    barWidth:26,// 柱形宽度(折线图无)
    name: '',// legend对应的名称
    type: 'bar',// 图形类型
    stack: 'TUE',// 若多个值一样,则堆叠到一起
    data: [1,1,1,11],// 数值
    smooth: true, // 线条平滑展示,折线图起作用
    areaStyle: {},// 面积填充,折线图有效
    emphasis: {// 高亮
      label: {
        show: true,
        textStyle: {
          color: '#333333',
          fontWeight: 'bold'
        }
      }
    }
  }]
}
// 更新配置
char5.setOption(option);

3.案例

<script setup>
  import * as echarts from "echarts";
  import {onMounted, reactive} from "vue";
  const info = reactive({
    char1List:[
      {
        name: '张三',
        type: 'bar',
        stack: 'Total',
        data: [150, 230, 224, 2182, 135, 2147, 260,100],
      },
      {
        name: '李四',
        stack: 'Total',
        data: [1250, 2230, 224, 212, 135, 2147, 260,100],
        type: 'bar'
      }
    ],
    char2List:[
      { value: 1048, name: 'Search Engine' },
      { value: 735, name: 'Direct' },
      { value: 580, name: 'Email' },
      { value: 484, name: 'Union Ads' },
      { value: 300, name: 'Video Ads' }
    ]
  })
onMounted(()=>{
  let char1 = echarts.init(document.getElementById('char1'));
  char1.setOption({
    title: {
      text: '测试多线条'
    },
    tooltip: {
      trigger: 'axis'
    },
    xAxis: {
      type: 'category',
      data: ['周一', '周二', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun','6666']
    },
    yAxis: {
      type: 'value'
    },
    series: info.char1List
  });

  //饼图
  let char2 = echarts.init(document.getElementById('char2'));
  char2.setOption({
    title: {
      text: '测试饼图'
    },
    tooltip: {
      trigger: 'item'
    },
    legend: {
      orient: 'vertical',
      left: 'left'
    },
    series: [
      {
        name: 'Access From',
        type: 'pie',
        radius: '50%',
        data: info.char2List,
        emphasis: {
          itemStyle: {
            shadowBlur: 10,
            shadowOffsetX: 0,
            shadowColor: 'rgba(0, 0, 0, 0.5)'
          }
        }
      }
    ]
  });
  //char3
  myChar3();
  myChar4();
})
const myChar3 =()=>{
  // 实例化echarts
  // 创建一个实例
  let char3 = echarts.init(document.getElementById("char3"))
  // 定义配置项
  let option = {
    // 图表的标题
    title:{
      text:"我的第一个图表"
    },
    // 图表的提示
    tooltip:{},
    // 图例
    legend:{data:["睡眠时长"]},
    // x轴线
    xAxis:{data:["周一","周二","周三","周四","周五","周六","周日"]},
    // y轴线
    yAxis:{},
    // 设置数据
    series:[
      {
        // 数据名称
        name:"睡眠时长",
        // 类型为柱状图
        type:"bar",
        // 数据data
        data:[8,10,4,5,9,4,8]
      }
    ]
  }
  char3.setOption(option);
}
const myChar4 =()=>{
  //实例化echarts
  // 创建一个实例
  let char4 = echarts.init(document.getElementById("char4"))
  // 定义配置项
  let option = {
    // 图表的标题
    title:{
      text:"生活作息表"
    },
    // 图表的提示
    tooltip:{},
    // 图例
    legend:{
      data:['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine']
    },
    // x轴线
    xAxis: {
      type: 'category',
      boundaryGap: false,
      data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
    },
    // y轴线
    yAxis:{
      type:"value"
    },
 // 构成画面的元素
      series:[
        {
          // 数据名称
          name:"睡眠时长",
          // 类型为柱状图
          type:"bar",
          // 数据data
          data:[8,10,4,5,9,4,8]
        },
        {
          // 数据名称
          name:"玩游戏时长",
          // 类型为柱状图
          type:"line",
          // 数据data
          data:[2,4,1,5,6,8,5]
        },
        {
          // 数据名称
          name:"上课时长",
          // 类型为柱状图
          type:"line",
          smooth:true,
          // 数据data
          data:[6,7,5,8,6,1,0],
          areaStyle:"#f70"
        },
        {
          name:"成绩",
          // 饼形图
          type:"pie",
          // radius:80,
          // 半径
          radius:[80,50],
          // 位移
          left:-80,
          top:-270,
          // 数据
          data:[
            {name:"js",value:90},
            {name:"html",value:85},
            {name:"jq",value:90},
            {name:"vue",value:50},
          ]
        }
      ]
    }
    char4.setOption(option);
  }
</script>
<template>
  <div style="width: calc(100vw - 221);display: flex">
    <div id="char1" style="width: 50%;height:300px;display: flex;border: 1px solid #ccc">

    </div>
    <div id="char2" style="width: 50%;height:300px;border: 1px solid #ccc">

    </div>
  </div>
  <div style="width: calc(100vw - 221);display: flex">
    <div id="char3" style="width: 50%;height:300px;display: flex;border: 1px solid #ccc">

    </div>
    <div id="char4" style="width: 50%;height:300px;border: 1px solid #ccc">

    </div>
  </div>
</template>

<style scoped>

</style>
posted @   李莲花  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示