溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么在vue中實現(xiàn)一個柱狀圖效果

發(fā)布時間:2021-01-21 15:08:49 來源:億速云 閱讀:538 作者:Leah 欄目:開發(fā)技術(shù)

今天就跟大家聊聊有關(guān)怎么在vue中實現(xiàn)一個柱狀圖效果,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

1.在html文件導(dǎo)入echart

 <!-- 引入echarts -->
 <script src="https://cdn.bootcdn.net/ajax/libs/echarts/4.8.0/echarts.min.js"></script>

2.在main.js上掛載echarts對象

Vue.prototype.$echarts = window.echarts
// 使用時直接使用this.$echarts

3.頁面結(jié)構(gòu)

<template>
 <div class="com-container">
  <div class="com-chart" ref="sellerRef"></div>
 </div>
</template>

4.data中的數(shù)據(jù)

export default {
 data () {
  return {
   // 初始化的圖表
   chartInstance: null,
   allDate: null, // 服務(wù)器返回的數(shù)據(jù)
  }
 },
}
```js
##### 5.methods中的邏輯
```js
methods: {
  // 初始化echarts對象
  initEchart(){
    // 獲取dom對象
    this.chartInstance = this.$echarts.init(this.$refs.sellerRef)
  },
  // 獲取服務(wù)器的數(shù)據(jù)
  async getData(){
    const {data:res} = await this.$http.get('seller')
    this.allDate = res
    // 返會的數(shù)據(jù)結(jié)構(gòu)是 name商家 value數(shù)值
   // 對返回的數(shù)據(jù)進行從小打到排序 sort方法
   this.allDate.sort((a, b) => {
    return a.value - b.value
   })
    // 調(diào)用更新視方法
    this.updateChart()
  },
  // 更新圖表
  updateChart(){
  // y軸類目軸的數(shù)據(jù)
  const sellerNames = this.allDate.map(item=>{
    // 根據(jù)你的需求調(diào)整
    return item.name
  })
  // x軸數(shù)值軸的數(shù)據(jù)
  const sellerValues = this.allDate.map(item=>{
    return item.value
  })
     const option = {
    xAxis: {
     type: 'value'
    },
    yAxis: {
     type: 'category',
     // y軸坐標軸使用遍歷出來的name
     data: sellerNames
    },
    series: [
     {
      // 類型為柱狀圖
      type: 'bar',
      // x軸數(shù)據(jù)需要設(shè)置在series的data類型為遍歷的value
      data: sellerValues
     }
    ]
  }
  // 渲染optio數(shù)據(jù)給dom對象
  this.chartInstance.setOption(option)
},

mounted鉤子函數(shù)調(diào)用

 // dom加載完成調(diào)用
 mounted () {
  this.initChart()
  this.getData()
 },

更改柱形圖配置

1.在index.html 引入主題配置文件

 <!-- 引入主題 -->
 <script src="./static/lib/theme/chalk.js"></script>

2.在需要使用主題的地方使用 初始化獲取dom傳入chalk

   this.chartInstance = this.$echarts.init(this.$refs.sellerRef, 'chalk')

3.option的配置 LinearGradient(x1,x2,y1,y2)線性漸變

   const option = {
    title: {
     text: '| 商家銷售統(tǒng)計',
     textStyle: {
      fontSize: 66
     },
     left: 20,
     top: 20
    },
    // 坐標軸配置
    grid: {
     top: '20%',
     left: '3%',
     right: '6%',
     bottom: '3%',
     // 距離包含坐標軸文字
     containLabel: true
    },
    xAxis: {
     type: 'value'
    },
    yAxis: {
     type: 'category',
     // y軸坐標軸使用遍歷出來的name
     data: sellerNames
    },
    series: [
     {
      // 類型為柱狀圖
      type: 'bar',
      // x軸數(shù)據(jù)需要設(shè)置在series的data類型為遍歷的value
      data: sellerValues,
      // 柱的寬度
      barWidth: 66,
      // 柱文字 默認不展示
      label: {
       show: true,
       // 文字靠右顯示
       position: 'right',
       textStyle: {
        // 顏色為白色
        color: 'white'
       }
      },
      // 控制柱的每一項
      itemStyle: {
       // 控制柱的圓角半徑
       barBorderRadius: [0, 33, 33, 0],
       // 線性漸變
       // 指定不同百分比的顏色數(shù)值
       color: new this.$echarts.graphic.LinearGradient(0, 0, 1, 0, [
        {
         // 百分之0的樣式
         offset: 0,
         color: '#5052EE'
        },
        {
         // 百分之百
         offset: 1,
         color: '#AB6EE5'
        }
       ])
      }
     }
    ],
    tooltip: {
     trigger: 'axis',
     axisPointer: {
      type: 'line', // 默認為直線,可選為:'line' | 'shadow'
      z: 0, // 背景層級
      lineStyle: {
       width: 66, // 背景寬度
       color: '#2D3443' // 背景顏色
      }
     }
    }
   }
   ```

看完上述內(nèi)容,你們對怎么在vue中實現(xiàn)一個柱狀圖效果有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

vue
AI