主頁 > 前端設計 > vue中echarts使用記錄

vue中echarts使用記錄

2021-10-25 07:06:01 前端設計

1. echarts的使用

安裝

npm i -S echarts@4.9.0

引入

main.js中引入(版本4.9.0)

import Echarts from 'echarts'
Vue.prototype.$echarts = Echarts

使用
①繪制面積圖
在這里插入圖片描述

注意容器要有寬高,獲取DOM都是在mounted中

<div id="total-orders-chart" :style="{ width: '100%', height: '100%'}"></div>
// 原生echarts
    const chartDom = document.getElementById('total-orders-chart')
    const chart = this.$echarts.init(chartDom)
    chart.setOption({
      xAxis: {
        type: 'category', // 默認是value,繪制出來是直線
        show: false,
        boundaryGap: false // 邊界空白間隙
      }, // x軸
      yAxis: {
        show: false
      }, // y軸
      // 一個series就是一個圖表
      series: [
        {
          type: 'line',
          data: [620, 432, 220, 534, 790, 430, 220, 320, 532, 320, 834, 690, 530, 220, 620],
          areaStyle: {
            color: 'purple' // 面積部分的顏色
          },
          lineStyle: {
            width: 0.5 // 線條
          },
          itemStyle: {
            opacity: 0 // 圓圈是否顯示
          },
          smooth: true // 平滑
        }
      ],
      grid: { // 繪圖網格的距離
        top: 0,
        left: 0,
        right: 0,
        bottom: 0
      }
    })

②繪制柱狀圖
在這里插入圖片描述

<div
   id="today-users-chart"
   :style="{ width: '100%', height: '100%' }"
 ></div>
const chartDom = document.getElementById('today-users-chart')
    const chart = this.$echarts.init(chartDom)
    chart.setOption({
      color: '#3398db',
      tooltip: {},
      xAxis: {
        type: 'category',
        data:['00:00','01:00','02:00','03:00','04:00','05:00','06:00','07:00','08:00','09:00','10:00', '12:00','13:00', '14:00'],
        show: false
        // boundaryGap: false
      }, // x軸
      yAxis: {
        show: false
      }, // y軸
      // 一個series就是一個圖表
      series: [
        {
          type: 'bar',
          data: [410, 82, 200, 334, 390, 330, 220, 150, 82, 200, 134, 290, 330, 150],
          barWidth: '60%',
          // areaStyle: {
          //   color: 'purple'
          // },
          // lineStyle: {
          //   width: 0
          // },
          // itemStyle: {
          //   opacity: 0
          // },
          // smooth: true
        }
      ],
      grid: {
        top: 0,
        left: 0,
        right: 0,
        bottom: 0
      }
    })

③繪制橫向柱狀圖+自定義
在這里插入圖片描述

<div
  id="total-users-chart"
  :style="{ width: '100%', height: '100%' }"
></div>
// 原生echarts
    const chartDom = document.getElementById('total-users-chart')
    const chart = this.$echarts.init(chartDom)
    chart.setOption({
      grid: {
        top: 0,
        left: 0,
        right: '-50%',
        bottom: 0
      },
      xAxis: {
        type: 'value',
        show: false,
        boundaryGap: false
      }, // x軸
      yAxis: {
        show: false,
        type: 'category'
      }, // y軸
      // 一個series就是一個圖表
      series: [
        {
          type: 'bar',
          stack: '總量', // 添加這個屬性可以讓多個成為一行
          data: [100],
          barWidth: 10,
          itemStyle: {
            color: '#45c946'
          }
        },
        {
          type: 'bar',
          stack: '總量', // 添加這個屬性可以讓多個成為一行
          data: [750],
          itemStyle: {
            color: '#eee'
          }
        },
        {
          type: 'custom',
          stack: '總量', // 添加這個屬性可以讓多個成為一行
          data: [100], // 這里的100和series中的第一保持一致
          renderItem: (params, api) => {
            const value = api.value(0) // 會獲取本物件(type=custom)中data的第一個元素100,
            const endPoint = api.coord([value, 0]) // 獲取第一個元素(100)的坐標,陣列中傳入的引數是value的x軸和y軸的值,x軸值是100,y軸值是0
            console.log(8585, endPoint)
            return {
              type: 'group',
              position: endPoint, // 繪圖的坐標系
              children: [
                {
                  type: 'path',
                  shape: {
                    d:
                      'M524.096 753.088l342.912-395.584a16 16 0 0 0-12.032-26.496H169.024a16 16 0 0 0-12.032 26.496l343.04 395.52a16 16 0 0 0 24.064 0z', // svg影像內容(iconfont中選好圖片,點下載,彈窗中選復制svg,復制出來以后把path標簽里面的d屬性的值粘貼過來)
                    x: -5, // 偏移量
                    y: -20,
                    width: 10,
                    height: 10,
                    layout: 'cover' // SVGd的縮放屬性
                  },
                  style: {
                    fill: '#45c946' // 填充色
                  }
                },
                {
                  type: 'path',
                  shape: {
                    d:
                      'M511.744 319.999l-383.744 383.744h767.488l-383.744-383.744z', // svg影像內容
                    x: -5, // 偏移量
                    y: 10,
                    width: 10,
                    height: 10,
                    layout: 'cover'
                  },
                  style: {
                    fill: '#45c946'
                  }
                }
              ]
            }
          }
        }
      ]
    })

④水球圖
在這里插入圖片描述

需要再安裝 npm i -S echarts-liquidfill

<template>
  <div class="li-quid-fill" id="container">
  </div>
</template>
import 'echarts-liquidfill'

export default {
  name: 'liQuidFill',
  data () {
    return {}
  },
  created () {},
  mounted () {
    const data = [0.68, { value: 0.5, direction: 'left' }, 0.4, 0.3] // 波浪必須從小到大
    const chart = this.$echarts.init(document.getElementById('container'))
    chart.setOption({
      series: [
        {
          type: 'liquidFill',
          data,
          shape: 'circle', // 形狀
          color: ['red', 'blue', 'green'],
          itemStyle: {
            opacity: 0.6
          },
          emphasis: {
            itemStyle: {
              opacity: 0.9
            }
          },
          // waveAnimation: false
          amplitude: 20, // 波浪振幅,數值越大,波浪越大
          backgroundStyle: {
            // color: 'purple',
            // borderWidth: 4,
            // borderColor: '#333'
          },
          outline: {
            show: true,
            borderDistance: 10,
            itemStyle: {
              // borderWidth: 2
              // borderColor: 'red'
              // shadowBlur: 'none'
            }
          }
        }
      ]
    })
  },
  methods: {}
}
</script>

<style lang="scss" scoped>
.li-quid-fill {
  height: 100%;
}
</style>

⑤詞云圖
需要再安裝 npm i -S echarts-wordcloud

<div class="word-cloud" id="wordCloud"></div>
const data = [
      {
        name: '劉強東',
        value: 200
      },
      {
        name: '馬云',
        value: 80
      },
      {
        name: '馬超',
        value: 35
      },
      {
        name: '劉強東',
        value: 150
      },
      {
        name: '馬云',
        value: 80
      },
      {
        name: '馬超',
        value: 35
      },
      {
        name: '劉強東',
        value: 60
      },
      {
        name: '馬云',
        value: 40
      },
      {
        name: '馬超',
        value: 15
      }
    ]
    const chart = this.$echarts.init(document.getElementById('wordCloud'))
    chart.setOption({
      series: [
        {
          type: 'wordCloud',
          data,
          shape: 'circle', // 形狀
          textStyle: {
            fontFamily: 'sans-serif',
            fontWeight: 'bold',
            // Color can be a callback function or a color string
            color: function() {
              // Random color
              return (
                'rgb(' +
                [
                  Math.round(Math.random() * 160),
                  Math.round(Math.random() * 160),
                  Math.round(Math.random() * 160)
                ].join(',') +
                ')'
              )
            }
          }
        }
      ]
    })

2. vue-echarts

安裝

npm i -S echarts@4.9.0 vue-echarts@5.0.0-beta.0

引入 main.js

import Echarts from 'echarts'
import VueEcharts from 'vue-echarts'

Vue.prototype.$echarts = Echarts
Vue.component('v-chart', VueEcharts)

使用
①繪制面積圖
組件默認寬高:600px×400px,如果需要我們可以手動設定
.echarts { width: 100%; height: 100%; },這個類(.echarts)組件自己的,v-chart外層不需要容器

<template>
	<v-chart :options="getOptions()" />
</template>
getOptions () {
      return {
        xAxis: {
          type: 'category',
          show: false,
          boundaryGap: false
        }, // x軸
        yAxis: {
          show: false
        }, // y軸
        // 一個series就是一個圖表
        series: [
          {
            type: 'line',
            data: [620, 432, 220, 534, 790, 430, 220, 320, 532, 320, 834, 690, 530, 220, 620],
            // data: this.orderTrend,
            areaStyle: {
              color: 'purple'
            },
            lineStyle: {
              width: 0
            },
            itemStyle: {
              opacity: 0
            },
            smooth: true
          }
        ],
        grid: {
          top: 0,
          left: 0,
          right: 0,
          bottom: 0
        }
      }
    }

②繪制柱狀圖

<v-chart :options="getOptions()" />
getOptions () {
      return {
        color: '#3398db',
        tooltip: {},
        xAxis: {
          type: 'category',
          // data: this.orderUserTrendAxis,
          data: [
            '00:00','01:00','02:00','03:00','04:00','05:00','06:00','07:00','08:00','09:00','10:00','12:00','13:00','14:00'
          ],
          show: false
          // boundaryGap: false
        }, // x軸
        yAxis: {
          show: false
        }, // y軸
        // 一個series就是一個圖表
        series: [
          {
            type: 'bar',
            // data: this.orderUserTrend,
            data: [
              410,82,200,334,390,330,220,150,82,200,134,290,330,150
            ],
            barWidth: '60%'
            // areaStyle: {
            //   color: 'purple'
            // },
            // lineStyle: {
            //   width: 0
            // },
            // itemStyle: {
            //   opacity: 0
            // },
            // smooth: true
          }
        ],
        grid: {
          top: 0,
          left: 0,
          right: 0,
          bottom: 0
        }
      }
    }

③繪制橫向柱狀圖+自定義

<v-chart :options="getOptions()" />
getOptions () {
      return {
        grid: {
          top: 0,
          left: 0,
          right: '-50%',
          bottom: 0
        },
        xAxis: {
          type: 'value',
          show: false,
          boundaryGap: false
        }, // x軸
        yAxis: {
          show: false,
          type: 'category'
        }, // y軸
        // 一個series就是一個圖表
        series: [
          {
            name: '上月平臺用戶數',
            type: 'bar',
            stack: '總量', // 添加這個屬性可以讓多個成為一行
            data: [100],
            // data: [this.userLastMonth],
            barWidth: 10,
            itemStyle: {
              color: '#45c946'
            }
          },
          {
            name: '今日平臺用戶數',
            type: 'bar',
            stack: '總量', // 添加這個屬性可以讓多個成為一行
            // data: [this.userTodayNumber],
            data: [750],
            itemStyle: {
              color: '#eee'
            }
          },
          {
            type: 'custom',
            stack: '總量', // 添加這個屬性可以讓多個成為一行
            data: [100], // 這里的100和series中的第一個保持一致
            // data: [this.userLastMonth], // 這里的100和series中的第一個保持一致
            renderItem: (params, api) => {
              const value = api.value(0) // 會獲取本物件中data的第一個 200,
              const endPoint = api.coord([value, 0]) // 獲取2第一個元素(200)的坐標
              console.log(8585, endPoint)
              return {
                type: 'group',
                position: endPoint,
                children: [
                  {
                    type: 'path',
                    shape: {
                      d:
                        'M524.096 753.088l342.912-395.584a16 16 0 0 0-12.032-26.496H169.024a16 16 0 0 0-12.032 26.496l343.04 395.52a16 16 0 0 0 24.064 0z', // svg影像內容
                      x: -5, // 偏移量
                      y: -20,
                      width: 10,
                      height: 10,
                      layout: 'cover'
                    },
                    style: {
                      fill: '#45c946'
                    }
                  },
                  {
                    type: 'path',
                    shape: {
                      d:
                        'M511.744 319.999l-383.744 383.744h767.488l-383.744-383.744z', // svg影像內容
                      x: -5, // 偏移量
                      y: 10,
                      width: 10,
                      height: 10,
                      layout: 'cover'
                    },
                    style: {
                      fill: '#45c946'
                    }
                  }
                ]
              }
            }
          }
        ]
      }
    }

④ 繪制柱狀圖
在這里插入圖片描述

<v-chart :options="chartOption" />
// 軸上的刻度
            alignWithLabel: true,
            lineStyle: {
              color: '#999'
            }
          },
          axisLine: { // 軸線
            lineStyle: {
              color: '#f00'
            }
          },
          axisLabel: {
            color: '#0f0'
          }
        },
        yAxis: {
          axisLine: { // 軸線
            show: false
          },
          axisTick: { // 軸上的刻度
            show: false
          },
          splitLine: { // 網格分割線
            lineStyle: {
              type: 'dotted',
              color: '#eee'
            }
          }
        },
        series: [
          {
            type: 'bar',
            barWidth: '35%',
            data: [200, 250, 300, 350, 300, 250, 200, 250, 300, 350, 300, 250]
          }
        ],
        color: '#3398db', // 柱子顏色
        grid: {
          top: 70,
          left: 60,
          right: 60,
          bottom: 50
        }
      }

插曲 面積圖時,如果Y軸上方頂邊了,可設定min, max
在這里插入圖片描述
⑤環形餅狀圖
在這里插入圖片描述

<v-chart :options="categoryOptions" />
renderPieChart () {
      const mockData = [
        {
          legengName: '粉面粥店',
          value: 67,
          percent: '15.40',
          itemStyle: {
            color: '#e7e702'
          },
          name: '粉面粥店 | 15.40%'
        },
        {
          legengName: '簡餐便當',
          value: 97,
          percent: '22.30',
          itemStyle: {
            color: '#8d7fec'
          },
          name: '簡餐便當 | 22.30%'
        },
        {
          legengName: '漢堡披薩',
          value: 92,
          percent: '21.15',
          itemStyle: {
            color: '#5085f2'
          },
          name: '漢堡披薩 | 21.15%'
        }
      ]
      console.log(mockData, colors)
      this.categoryOptions = {
        title: [
          {
            text: '品類分布', // 兩個標題
            textStyle: {
              fontSize: 14,
              color: '#444'
            },
            left: 20,
            top: 20
          },
          {
            text: '累計訂單量', // 兩個標題
            subtext: 320, // 副標題
            x: '39.5%',
            y: '45.5%',
            textStyle: {
              fontSize: 14,
              color: '#999'
            },
            subtextStyle: {
              fontSize: 28,
              color: '#333'
            },
            textAlign: 'center'
            // left: 20,
            // top: 20
          }
        ],
        series: [
          {
            name: '品類分布',
            type: 'pie',
            data: mockData,
            label: {
              // normal: {
              show: true,
              // position: 'outter',
              formatter (params) {
                return params.data.legengName
              }
              // }
            },
            center: ['40%', '50%'], // 餅圖位置
            radius: ['45%', '60%'], // radius 半徑:第一個值是內半徑、第二個值是外半徑
            labelLine: {
              // normal: {
              length: 5, // 指向餅圖的長線段
              length2: 3, // 指向文字的線段
              smooth: true
              // }
            },
            clockwise: false, // 資料是否順時針
            itemStyle: { // 每個圖之間的間隙
              borderWidth: 4,
              borderColor: '#fff'
            }
          }
        ],
        legend: { // 品類的描述
          type: 'scroll',
          orient: 'vertical',
          height: 250,
          top: 'middle',
          left: '70%',
          textStyle: {
            color: '#8c8c8c'
          }
        },
        tooltip: {
          trigger: 'item',
          formatter (params) {
            const str =
              params.seriesName +
              '<br/>' +
              params.marker +
              params.data.legengName +
              '<br/>' +
              '數量:' +
              params.data.value +
              '<br/>' +
              '占比:' +
              params.data.percent +
              '%'
            return str
          },
          backgroundColor: 'rgba(50, 50, 50, 0.7)',
          textStyle: {
            color: '#fff'
          }
        }
      }
    },

⑥繪制百度地圖散點圖
在這里插入圖片描述

要在index.html中引入百度地圖api

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=G1LFyjrNGIkns5OfpZnrCGAKxpycPLwb"></script>

然后bMap.vue檔案中引入 echarts/extension/bmap/bmap

<template>
  <div class="b-map-test">
    <v-chart :options="option"></v-chart>
  </div>
</template>
// 第二步要引入這里
import 'echarts/extension/bmap/bmap'

this.option = {
      title: {
        text: '外賣銷售資料大盤',
        subtext: '銷售趨勢統計',
        sublink: 'https://www.baidu.com',
        left: 'center'
      },
      bmap: {
        key: 'G1LFyjrNGIkns5OfpZnrCGAKxpycPLwb',
        center: [104.114129, 37.550339],
        zoom: 5, // 縮放比例
        roam: true, // 是否允許滑鼠互動如縮放、拖拽
        mapStyle: {
          styleJson: [
            {
              featureType: 'water',
              elementType: 'all',
              stylers: {
                color: '#d1d1d1'
              }
            },
            {
              featureType: 'land',
              elementType: 'all',
              stylers: {
                color: '#f3f3f3'
              }
            },
            {
              featureType: 'railway',
              elementType: 'all',
              stylers: {
                visibility: 'off'
              }
            },
            {
              featureType: 'highway',
              elementType: 'all',
              stylers: {
                color: '#fdfdfd'
              }
            },
            {
              featureType: 'highway',
              elementType: 'labels',
              stylers: {
                visibility: 'off'
              }
            },
            {
              featureType: 'arterial',
              elementType: 'geometry',
              stylers: {
                color: '#fefefe'
              }
            },
            {
              featureType: 'arterial',
              elementType: 'geometry.fill',
              stylers: {
                color: '#fefefe'
              }
            },
            {
              featureType: 'poi',
              elementType: 'all',
              stylers: {
                visibility: 'off'
              }
            },
            {
              featureType: 'green',
              elementType: 'all',
              stylers: {
                visibility: 'off'
              }
            },
            {
              featureType: 'subway',
              elementType: 'all',
              stylers: {
                visibility: 'off'
              }
            },
            {
              featureType: 'manmade',
              elementType: 'all',
              stylers: {
                color: '#d1d1d1'
              }
            },
            {
              featureType: 'local',
              elementType: 'all',
              stylers: {
                color: '#d1d1d1'
              }
            },
            {
              featureType: 'arterial',
              elementType: 'labels',
              stylers: {
                visibility: 'off'
              }
            },
            {
              featureType: 'boundary',
              elementType: 'all',
              stylers: {
                color: '#fefefe'
              }
            },
            {
              featureType: 'building',
              elementType: 'all',
              stylers: {
                color: '#d1d1d1'
              }
            },
            {
              featureType: 'label',
              elementType: 'labels.text.fill',
              stylers: {
                color: '#999999'
              }
            }
          ]
        }
      },
      tooltip: {},
      series: [
        {
          name: '銷售額',
          type: 'scatter', // 散點圖
          coordinateSystem: 'bmap', // 坐標系統 百度地圖
          data: convertData(data),
          encode: {
            value: 2 // 定制value值為資料value陣列中的第三項,下標為2,效果:tooltip上顯示的就是銷售額數值80、100、180(因為經過convertData函式處理后,資料變成了 { name: '海門', value: [ x坐標, y坐標, 180] })
          },
          itemStyle: {
            color: 'purple' // 點的顏色
          },
          symbolSize (value) { // 點的大小
            return value[2] / 10 // 這里的value為每個資料的value陣列,取第三項,縮小10倍
          },
          label: {
            show: false, // 這里設定成false,配合下面的emphasis,效果是滑鼠移入顯示label
            position: 'right',
            // formatter: '{b}' // 默認為value值
            formatter (v) {
              return `${v.data.name} - ${v.data.value[2]}`
            }
          },
          emphasis: {
            label: {
              show: true
            }
          }
        },
        {
          name: 'Top 10',
          type: 'effectScatter',
          coordinateSystem: 'bmap',
          data: convertData(data.sort((a, b) => b.value - a.value)).slice(0, 10),
          encode: {
            value: 2
          },
          symbolSize (value) { // 點的大小
            return value[2] / 10 // 這里的value為每個資料的value陣列,取第三項,縮小10倍
          },
          label: {
            show: true,
            position: 'right',
            // formatter: '{b}'
            formatter (v) {
              return `${v.data.name} - ${v.data.value[2]}`
            }
          },
          hoverAnimation: true,
          rippleEffect: { // 波紋效果
            brushType: 'stroke'
          },
          itemStyle: {
            color: 'purple',
            shadowBlur: 10,
            shadowColor: '#333'
          }
        }
      ]
    }

3. v-echarts

安裝

npm i -S v-charts@1.19.0 echarts@4.9.0

引入 main.js

import './plugins/vcharts'

plugins/vcharts.js

import Vue from 'vue'
// 支持按需引入
// import VEline from 'v-charts/lib/line.common'
// Vue.component('ve-line', VEline)

import VCharts from 'v-charts'
import 'v-charts/lib/style.css'

Vue.use(VCharts)

①繪制百度地圖散點圖

<template>
    <!-- v-charts的地圖功能 -->
    <!-- <ve-map :data="chartData" height="800px"></ve-map> -->

    <!-- 另外 v-charts還封裝了百度地圖、高德地圖的殼子, 使用了v-bmap之后就不用在index.html中引入百度地圖的api了 -->
    <ve-bmap
    :title="title"
    :settings="chartSettings"
    :tooltip="{}"
    :series="chartSeries"
    height="100%">
  </ve-bmap>
</template>
title: {
        text: '外賣銷售資料大盤',
        subtext: '銷售趨勢統計',
        sublink: 'https://www.baidu.com',
        left: 'center'
      },
      chartSettings: {
        key: 'G1LFyjrNGIkns5OfpZnrCGAKxpycPLwb',
        bmap: {
          center: [104.114129, 37.550339],
          zoom: 5,
          roam: false,
          mapStyle: {
            styleJson: [
              {
                featureType: 'water',
                elementType: 'all',
                stylers: {
                  color: '#d1d1d1'
                }
              },
              {
                featureType: 'land',
                elementType: 'all',
                stylers: {
                  color: '#f3f3f3'
                }
              },
              {
                featureType: 'railway',
                elementType: 'all',
                stylers: {
                  visibility: 'off'
                }
              },
              {
                featureType: 'highway',
                elementType: 'all',
                stylers: {
                  color: '#fdfdfd'
                }
              },
              {
                featureType: 'highway',
                elementType: 'labels',
                stylers: {
                  visibility: 'off'
                }
              },
              {
                featureType: 'arterial',
                elementType: 'geometry',
                stylers: {
                  color: '#fefefe'
                }
              },
              {
                featureType: 'arterial',
                elementType: 'geometry.fill',
                stylers: {
                  color: '#fefefe'
                }
              },
              {
                featureType: 'poi',
                elementType: 'all',
                stylers: {
                  visibility: 'off'
                }
              },
              {
                featureType: 'green',
                elementType: 'all',
                stylers: {
                  visibility: 'off'
                }
              },
              {
                featureType: 'subway',
                elementType: 'all',
                stylers: {
                  visibility: 'off'
                }
              },
              {
                featureType: 'manmade',
                elementType: 'all',
                stylers: {
                  color: '#d1d1d1'
                }
              },
              {
                featureType: 'local',
                elementType: 'all',
                stylers: {
                  color: '#d1d1d1'
                }
              },
              {
                featureType: 'arterial',
                elementType: 'labels',
                stylers: {
                  visibility: 'off'
                }
              },
              {
                featureType: 'boundary',
                elementType: 'all',
                stylers: {
                  color: '#fefefe'
                }
              },
              {
                featureType: 'building',
                elementType: 'all',
                stylers: {
                  color: '#d1d1d1'
                }
              },
              {
                featureType: 'label',
                elementType: 'labels.text.fill',
                stylers: {
                  color: '#999999'
                }
              }
            ]
          }
        }
      },
      chartSeries: [
        {
          name: '銷售額',
          type: 'scatter', // 散點圖
          coordinateSystem: 'bmap', // 坐標系統 百度地圖
          data: convertData(data),
          encode: {
            value: 2 // 定制value值為資料value陣列中的第三項,下標為2,效果:tooltip上顯示的就是銷售額數值80、100、120
          },
          itemStyle: {
            color: 'purple' // 點的顏色
          },
          symbolSize (value) { // 點的大小
            return value[2] / 10 // 這里的value為每個資料的value陣列,取第三項,縮小10倍
          },
          label: {
            show: false, // 這里設定成false,配合下面的emphasis,效果是滑鼠移入顯示label
            position: 'right',
            // formatter: '{b}' // 默認為value值
            formatter (v) {
              return `${v.data.name} - ${v.data.value[2]}`
            }
          },
          emphasis: {
            label: {
              show: true
            }
          }
        },
        {
          name: 'Top 10',
          type: 'effectScatter',
          coordinateSystem: 'bmap',
          data: convertData(data.sort((a, b) => b.value - a.value)).slice(0, 10),
          encode: {
            value: 2
          },
          symbolSize (value) { // 點的大小
            return value[2] / 10 // 這里的value為每個資料的value陣列,取第三項,縮小10倍
          },
          label: {
            show: true,
            position: 'right',
            // formatter: '{b}'
            formatter (v) {
              return `${v.data.name} - ${v.data.value[2]}`
            }
          },
          hoverAnimation: true,
          rippleEffect: { // 波紋效果
            brushType: 'stroke'
          },
          itemStyle: {
            color: 'purple',
            shadowBlur: 10,
            shadowColor: '#333'
          }
        }
      ]

② 水球圖
v-charts自己提供的

<ve-liquidfill :data="chartData" height="100%" :settings="chartSettings" />
function getColor(value) {
  // return 'rgba(97,216,0,.7)' // 0-0.5綠
  // return 'rgba(204,178,26,.7)' // 0.5-0.8土黃
  // return 'rgba(241,47,28,.7)'  //0.8+ 紅
  // return '#c7c7cb' // 灰
  return value > 0 && value <= 0.5
    ? 'rgba(97,216,0,.7)'
    : value > 0.5 && value <= 0.8
    ? 'rgba(204,178,26,.7)'
    : value > 0.8
    ? 'rgba(241,47,28,.7)'
    : '#c7c7cb'
}
chartData: {
         columns: ['title', 'percent'],
         rows: [{ title: 'rate', percent: 0.4825 }]
      },
chartSettings = {
      seriesMap: {
        rate: {
          radius: '80%',
          label: {
            // 這里不要formatter 顯示的值就是48%
            formatter(value) {
              return `${Math.floor(value.data.value * 100)}%`
            },
            textStyle: {
              fontSize: 36,
              color: '#999',
              fontWeight: 'normal'
            },
            position: ['50%', '50%'], // label的默認位置就是這個,居中的
            insideColor: '#fff' // 水波紋和數字重疊時的顏色
          },
          outline: {
            itemStyle: {
              borderColor: '#aaa4a4',
              borderWidth: 1,
              color: 'none', // 環狀空白的顏色
              shadowBlur: 0,
              shadowColor: '#fff'
            },
            borderDistance: 0
          },
          backgroundStyle: {
            color: '#fff'
          },
          itemStyle: {
            shadowBlur: 0, // 水波紋的陰影
            shadowColor: '#fff'
          },
          amplitude: 8, // 水波浪的振幅
          color: [getColor(this.chartData.rows[0].percent)]
        }
      }
    }

③詞云圖

 <ve-wordcloud
      :data="chartData"
      :settings="chartSettings"
      height="100%"
 ></ve-wordcloud>
chartData: {
        columns: ['name', 'value'],
        rows: [
          {
            name: '馬超',
            value: 100 * Math.random()
          },
          {
            name: '馬超1',
            value: 100 * Math.random()
          },
          {
            name: '馬超2',
            value: 100 * Math.random()
          },
          {
            name: '馬超3',
            value: 100 * Math.random()
          },
          {
            name: '馬超4',
            value: 100 * Math.random()
          },
          {
            name: '馬超5',
            value: 100 * Math.random()
          },
          {
            name: '馬超6',
            value: 100 * Math.random()
          },
          {
            name: '馬超7',
            value: 100 * Math.random()
          },
          {
            name: '馬超8',
            value: 100 * Math.random()
          },
          {
            name: '馬超9',
            value: 100 * Math.random()
          },
          {
            name: '馬超10',
            value: 100 * Math.random()
          }
        ]
      },
      chartSettings: {
        color: [
          'rgba(97,216,0,.7)',
          'rgba(204,178,26,.7)',
          'rgba(245,166,35,.7)',
          'rgba(156,13,113,.7)'
        ]
      }

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/335158.html

標籤:其他

上一篇:記Vue中appendChild加不上class樣式到解決

下一篇:Vue中的組件,看我就夠了

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more