vue-Echarts柱状图箭头增长下降

实现效果

简介--变量

newArr = [] // 存放柱图数据
oldArr = [] // 定义在return data 存放上一次柱图数据
Array = [] // 趋势上下数据 数据来源为新柱图数据 - 上一次柱图数据
count = '' // 用于计数 第一次加载页面为 oldArr 赋值
// 数据为模拟数据

实现过程

let _this = this
let newArr = [] // 存放柱图数据
let Array = [] // 趋势上下数据
// 模拟数据
for (let i = 0; i < 5; i++) {
  newArr.push(Math.round((Math.random() * 300) + 1000))
}
this.count++
// 第一次进入页面赋值 count计数 测试数据
if (this.count === 1) {
  this.oldArr = newArr
} else {
  setTimeout(() => {
    this.oldArr = newArr
  }, 2000)
}
for (let z = 0; z < newArr.length; z++) {
  Array[z] = newArr[z] - this.oldArr[z]
}
// 各个柱图颜色
let myColor = ['#f06f0c', '#f0a80c', '#e7b551', '#6495ED', '#009ffa', '#009ffa']
let up = 'path://M286.031,265l-16.025,3L300,223l29.994,45-16.041-3-13.961,69Z'
let down = 'path://M216.969,292l16.025-3L203,334l-29.994-45,16.041,3,13.961-69Z'
let option = {
  tooltip: {
    trigger: 'axis',
    axisPointer: {
      type: 'shadow'
    },
    formatter: function (params) {
      console.log(params)
      // params[0].name表示x轴数据
      return params[0].name + '<br/>' +
      "<span style='display:inline-block;width:10px;height:10px;margin-right:10px;border-radius:10px;background-color:" + params[0].color.colorStops[0].color + ";'></span>" +
      '测试1:' + params[0].value + '<br>' +
      "<span style='display:inline-block;width:10px;height:10px;margin-right:10px;border-radius:10px;background-color:" + params[1].color + ";'></span>" +
      '测试1:' + Array[params[0].dataIndex]
    },
    backgroundColor: 'rgba(0,90,222,0.8)', // 修改背景颜色
    textStyle: {
      color: '#ffffff' // 文字的颜色
    }
  },
  grid: {
    height: '100%',
    width: '92%',
    top: 0,
    left: 0
  },
  xAxis: {
    type: 'value',
    axisLine: { show: false },
    axisTick: { show: false },
    splitLine: { show: false },
    axisLabel: { show: false },
    max: 'dataMax'
  },
  yAxis: {
    axisLine: { show: false },
    axisLabel: { show: false },
    axisTick: { show: false },
    splitLine: { show: false },
    type: 'category',
    data: ['测试1', '测试2', '测试3', '测试4', '测试5'],
    inverse: true,
    animationDuration: 300,
    animationDurationUpdate: 300
  },
  series: [
    {
      realtimeSort: true,
      data: newArr,
      type: 'bar',
      barWidth: 18,
      label: {
        name: '123',
        show: true,
        // position: 'right',
        align: 'left',
        verticalAlign: 'middle',
        position: 'insideLeft',
        valueAnimation: true,
        // formatter: '{b}',
        fontSize: 16,
        color: '#eaeaea',
        formatter: function(params) {
          // console.log(params)
          return params.name + ':' + params.data + '   ' + Array[params.dataIndex]
        }
      },
      itemStyle: {
        borderRadius: [10, 10, 10, 10],
        color: function(params) {
          return new _this.$echarts.graphic.LinearGradient(1, 0, 0, 0, [            { offset: 0, color: myColor[params.dataIndex] },
            { offset: 1, color: 'transparent' }
          ])
        }
      }
    },
    {
      data: newArr,
      type: 'pictorialBar',
      symbol: function (data, params) {
        if (Array[params.dataIndex] > 0) {
          return up
        } else {
          return down
        }
      },
      symbolSize: [15, 15],
      symbolOffset: [20, 0],
      symbolPosition: 'end',
      itemStyle: {
        color: function (params) {
          if (Array[params.dataIndex] > 0) {
            return '#92fda5'
          } else {
            return '#ff0000'
          }
        }
      }
    }
  ]
}

关键代码 

 根据存储趋势上下数据Array判断显示箭头与颜色

symbol: function (data, params) {
    if (Array[params.dataIndex] > 0) {
      return up
    } else {
      return down
    }
 },
 
 color: function (params) {
          if (Array[params.dataIndex] > 0) {
            return '#92fda5'
          } else {
            return '#ff0000'
          }
        }

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现vue-echarts柱状图,你可以按照以下步骤进行操作: 1. 首先,你需要引入Echarts库。可以通过在代码中引入`import * as echarts from "echarts";`来实现引入。 2. 接下来,在vue组件的`<template>`标签中添加一个`<div>`元素作为图表容器,并为其设置一个唯一的id属性,例如`id="mychart"`。 3. 在vue组件的`<script>`标签中,定义一个data属性,用于存储横坐标和数据。例如,你可以使用`xData`存储横坐标数组,使用`yData`存储数据数组。 4. 在mounted生命周期钩子函数中,调用`initEcharts`方法来初始化图表。 5. 在methods中定义`initEcharts`方法,用于初始化图表。你可以使用`echarts.init`方法来创建一个echarts实例,并传入图表容器的id。然后,通过调用`setOption`方法来设置图表的配置项和数据。 6. 如果你想让图表能够根据屏幕大小自适应,你可以在`window`对象上添加一个`resize`事件监听器,并在事件处理程序中调用`resize`方法。 7. 如果你需要展示多列数据,你可以在series中添加多个对象,每个对象表示一列数据。你可以为每列数据设置相应的type和data。 下面是一个示例代码,演示了如何在vue中实现一个简单的柱状图: ```html <template> <div class="echart" id="mychart" :style="myChartStyle"></div> </template> <script> import * as echarts from "echarts"; export default { data() { return { xData: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], yData: [23, 24, 18, 25, 27, 28, 25], myChartStyle: { float: "left", width: "100%", height: "400px" } }; }, mounted() { this.initEcharts(); }, methods: { initEcharts() { const option = { xAxis: { data: this.xData }, yAxis: {}, series: [ { type: "bar", data: this.yData } ] }; const myChart = echarts.init(document.getElementById("mychart")); myChart.setOption(option); window.addEventListener("resize", () => { myChart.resize(); }); } } }; </script> ``` 这样,你就可以在vue中实现一个简单的柱状图,并且可以根据需要展示多列数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vue使用Echarts柱状图](https://blog.csdn.net/xcbzsy/article/details/126890618)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值