引用echart折线图渲染数据

本文展示了如何在Vue.js应用中利用Echarts库创建一个故障告警趋势的折线图。首先设置包含图表的div容器,然后导入Echarts模块,初始化图表并设置配置项,包括x轴和y轴的数据以及颜色、提示信息等。在方法中调用图表渲染函数,并模拟数据进行填充。同时,处理窗口大小变化时的图表重绘问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 效果图:

2 代码部分

//1 首先要用一个div盒子容器,固定宽高,用来放图表
//其次添加id,ref,要用来获取容器图表进行渲染
//注意引用前提是要安装echart不然不生效

<div class="title">故障告警趋势</div>
      <div class="chart-box">
        <div
          id="alarmEventLien"
          style="width: 100%;height:260px;"
          ref="alarmEventLien"
        />
       </div>

//2 局部引入折线图,最好是用哪个引用哪个
import * as echarts from "echarts";


//3 methods中写入事件,然后再需要的地方调用
methods:{
     initChart() {
      this.alarmEventLien = echarts.init(
        document.getElementById("alarmEventLien")
      );

      //这里还用了一个事件this.alarmEventLien,由于可能大小屏切换,要计算宽高,所以选择用resize根据window计算,使用时在created中调用,具体看下面created中代码
      // 绘制图表
      this.alarmEventLien.setOption({
        color: ["#377dff"],
        tooltip: {
          trigger: "axis",
          axisPointer: {
            type: "cross",
            label: {
              backgroundColor: "#6a7985"
            }
          }
        },
        grid: {
          left: "36px",
          right: "68px",
          bottom: "10px",
          top: "32px",
          containLabel: true,
          borderColor: "#d8d8d8"
        },
        xAxis: [
          {
            name: "日期",
            type: "category",
            boundaryGap: false,
            data: [],
            nameTextStyle: {
              color: "#b8bcba"
            },
            axisLine: {
              lineStyle: {
                color: "#b8babc"
              }
            }
          }
        ],
        yAxis: [
          {
            name: "故障告警数量",
            type: "value",
            nameTextStyle: {
              color: "#b8bcba"
            },
            axisLine: {
              lineStyle: {
                color: "#b8babc"
              }
            },
            axisPointer: {
              snap: true
            },
            splitLine: {
              lineStyle: {
                color: "rgba(255,255,255,0.1)"
              }
            }
          }
        ],
        series: [
          {
            name: "故障告警数量",
            type: "line",
            stack: "总量",
            data: []
          }
        ]
      });
    },

    //在这个事件触发时赋值,所以在这里调用this.initChart
     countUserEvent() {
      this.initChart();
      const data = {
        regionIdentify: "region",
        parentRegionCode: this.areaId,
        regionName: this.areaName,
        alarmTime: this.selectMonth
      };
      this.loadingChart = true;
      setTimeout(() => {
        this.alarmEventLien.hideLoading();
        this.dayData = [];
        this.dayList = [];
            //数据写死用来模拟,有接口调用直接赋值就行
        let chartDa=[ {
      "day": "1",
      "value": 6
    },
    {
      "day": "2",
      "value": 6
    },
    {
      "day": "3",
      "value": 0
    },
    {
      "day": "4",
      "value": 5
    },
    {
      "day": "5",
      "value": 4
    },
    {
      "day": "6",
      "value": 0
    },
    {
      "day": "7",
      "value": 1
    },
    {
      "day": "8",
      "value": 0
    },
    {
      "day": "9",
      "value": 2
    },
    {
      "day": "10",
      "value": 3
    },
    {
      "day": "11",
      "value": 1
    },
    {
      "day": "12",
      "value": 0
    },
    {
      "day": "13",
      "value": 0
    },
    {
      "day": "14",
      "value": 0
    },
    {
      "day": "15",
      "value": 8
    },
    {
      "day": "16",
      "value": 1
    },
    {
      "day": "17",
      "value": 0
    },
    {
      "day": "18",
      "value": 1
    },
    {
      "day": "19",
      "value": 0
    },
    {
      "day": "20",
      "value": 0
    },
    {
      "day": "21",
      "value": 9
    },
    {
      "day": "22",
      "value": 1
    },
    {
      "day": "23",
      "value": 3
    },
    {
      "day": "24",
      "value": 1
    },
    {
      "day": "25",
      "value": 0
    },
    {
      "day": "26",
      "value": 2
    },
    {
      "day": "27",
      "value": 4
    },
    {
      "day": "28",
      "value": 0
    }]
    //series动态数据不能有空数据,不然,只有数据点,而连线出不来
        let chartData=chartDa
        //对拿到的数据做处理转换
        if (chartData != null && chartData.length > 0) {
          for (let i = 0; i < chartData.length; i++) {
            this.dayData.push(chartData[i].value);
            this.dayList.push(chartData[i].day);
          }
        }
        this.alarmEventLien.setOption({
          xAxis: [
            {
              data: this.dayList
            }
          ],
          series: [
            {
              data: this.dayData
            }
          ]
        });
        this.loadingChart = false;
      }, 100);
    },

}
//最后要在页面挂载时在调一下用来赋值的事件
  mounted() {
    this.countUserEvent();
  },


//现在是created中
created() {
    window.onresize = () => {
      if (this.alarmEventLien) {
        this.alarmEventLien.resize();
      }
    };
  },

要在 React 中使用 ECharts 来绘制柱状折线图,可以按照以下步骤进行: 1. 安装 ECharts 库 使用 npm 命令安装 ECharts 库,命令如下: ``` npm install echarts --save ``` 2. 导入 ECharts 库 在需要使用 ECharts 的组件中,通过 import 语句导入 ECharts 库,代码如下: ```javascript import echarts from 'echarts'; ``` 3. 创建 ECharts 实例 在组件的 componentDidMount 生命周期中,通过 ref 获取容器元素,然后创建 ECharts 实例,代码如下: ```javascript componentDidMount() { const { data } = this.props; const chartDom = this.refs.chart; const myChart = echarts.init(chartDom); // 绘制图表 myChart.setOption({ // 配置项 }); } ``` 4. 配置图表 在 setOption 方法中,可以配置图表的各种属性,包括标题、坐标轴、数据系列等,代码如下: ```javascript myChart.setOption({ title: { text: '柱状折线图示例' }, legend: { data: ['销量', '利润'] }, tooltip: {}, xAxis: { data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子'] }, yAxis: [ { type: 'value', name: '销量(件)' }, { type: 'value', name: '利润(元)' } ], series: [ { name: '销量', type: 'bar', data: [5, 20, 36, 10, 10, 20] }, { name: '利润', type: 'line', yAxisIndex: 1, data: [10, 30, 50, 20, 20, 30] } ] }); ``` 以上代码配置了一个带有标题、图例、提示框、两个坐标轴、柱状系列和折线系列的柱状折线图。 5. 渲染图表 最后,在 render 方法中,渲染一个 div 容器,并通过 ref 属性指定其引用,代码如下: ```javascript render() { return ( <div ref="chart" style={{ width: '100%', height: '400px' }}></div> ); } ``` 这样,就可以在 React 中使用 ECharts 绘制柱状折线图了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值