vue中使用echarts实现柱状图点击事件

该博客介绍了如何使用Echarts库创建告警次数TOPN的柱状图,并通过柱状图的点击事件实现数据查询。通过监听图表区域的点击,获取点击位置对应的x轴数据,调用`getAlertList`方法获取详细信息。同时,提供了两种不同的点击事件处理方式:一种是针对单个柱体的点击,另一种是整个图表区域的点击。
摘要由CSDN通过智能技术生成
drawBar(){ //  告警次数TOPN 柱状图
  // 基于准备好的dom,初始化echarts实例
  let ref = this.$refs.bar
  if (ref && ref !== undefined) {
    let myChart = this.$echarts.init(ref)
    // 绘制图表
    myChart.setOption({
      color: ['#f16e6b'],
      tooltip: {
        trigger: 'axis',
        axisPointer: {            // 坐标轴指示器,坐标轴触发有效
          type: 'shadow'        // 默认为直线,可选为:'line' | 'shadow'
        }
      },
      grid: {
        left: '10%',
        right: '10%',
        bottom: '3%',
        containLabel: true
      },
      xAxis: [
        {
          type: 'category',
          data: this.date_x,
          name: '终端编号'
        }
      ],
      yAxis: [
        {
          type: 'value'
        }
      ],
      series: [
        {
          type: 'bar',
          stack: '告警',
          data: this.date_y
        }
      ]
    });
    // 方式一:点击有数据的条形柱体查询相关U盘id,获取对应U盘id的列表数据
    // myChart.on('click', (params) => {
    //   this.getAlertList(parseFloat(this.risk_value), params.name)
    // })
    // 方式二:整条柱体的点击事件(如果要实现获取id的效果,则需要拿到series的数组,再通过index拿到对应的数据对象)
    myChart.getZr().on('click', (params) => {
      const pointInPixel = [params.offsetX, params.offsetY];
      if (myChart.containPixel('grid', pointInPixel)) {
        let xIndex = myChart.convertFromPixel({seriesIndex: 0}, [params.offsetX, params.offsetY])[0]
        this.getAlertList(parseFloat(this.risk_value), this.date_x[xIndex])
      }
    })
    // getZr()方法可以监听到整个画布的点击事件,zIndex是被点击的柱体的index
  }
},
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在Vue使用Echarts实现柱状图动态数据,可以按照以下步骤进行: 1. 安装echartsvue-echarts ```bash npm install echarts --save npm install vue-echarts --save ``` 2. 在Vue组件引入Echartsvue-echarts ```javascript import ECharts from 'vue-echarts/components/ECharts.vue' import 'echarts/lib/chart/bar' import 'echarts/lib/component/tooltip' ``` 3. 在Vue组件定义数据和配置项 ```javascript data () { return { chartData: { xData: [], yData: [] } } }, computed: { chartOptions () { return { tooltip: {}, xAxis: { data: this.chartData.xData }, yAxis: {}, series: [{ name: '销量', type: 'bar', data: this.chartData.yData }] } } } ``` 4. 在Vue组件定义方法来更新数据 ```javascript methods: { updateChartData () { // 获取新数据 const newData = ... // 更新chartData this.chartData.xData = newData.xData this.chartData.yData = newData.yData } } ``` 5. 在Vue组件使用ECharts组件并传入配置项和数据 ```html <template> <div> <e-charts :options="chartOptions" :data="chartData"></e-charts> </div> </template> <script> import ECharts from 'vue-echarts/components/ECharts.vue' import 'echarts/lib/chart/bar' import 'echarts/lib/component/tooltip' export default { components: { ECharts }, data () { return { chartData: { xData: [], yData: [] } } }, computed: { chartOptions () { return { tooltip: {}, xAxis: { data: this.chartData.xData }, yAxis: {}, series: [{ name: '销量', type: 'bar', data: this.chartData.yData }] } } }, methods: { updateChartData () { // 获取新数据 const newData = ... // 更新chartData this.chartData.xData = newData.xData this.chartData.yData = newData.yData } } } </script> ``` 6. 在需要更新数据的时候调用方法 ```html <template> <div> <e-charts :options="chartOptions" :data="chartData"></e-charts> <button @click="updateChartData">更新数据</button> </div> </template> ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值