zoukankan      html  css  js  c++  java
  • echarts常用配置项【持续更新】

    渐变色

              itemStyle: {
                    normal: {
                        color: new echarts.graphic.LinearGradient(0, 0, 0, 1, 
                        [{
                            offset: 0,
                            color: '#FFF0F5'  //浅色
                        }, {
                            offset: 1,
                            color: '#FFB6C1'  //深色
                        }], false)
                    }
                },

    echarts多个柱子的柱状图legend,xaxis,数据之间的关系

    关系图

    let option = {
      backgroundColor:"",
      series:[
        {
          type:"graph",
          focusNodeAdjacency:true,  //是否在鼠标移到节点上的时候突出显示节点以及节点的边和邻接节点
          // 节点间的label样式
          edgeLabel: {
            normal: {
              show: true,
              position: "middle",
              textStyle: {
                fontSize: 16
              },
              formatter: "{c}%"
            }
          },
          links: [
            {
                ...
                // 鼠标放上去高亮样式
                emphasis: {
                   label: {
                     show: true,
                     position: 'start',
                     color: '#46f3fe',
                     fontSize: 16,
                     formatter: '{c}%'
                     /*
                     {a}:系列名。
                     {b}:数据名。
                     {c}:数据值。
                     {@xxx}:数据中名为'xxx'的维度的值,如{@product}表示名为'product'` 的维度的值。
                     {@[n]}:数据中维度n的值,如{@[3]}` 表示维度 3 的值,从 0 开始计数。
                      */
                   }
                }
            }
          ]
          
        }
      ]

    tooltip换行:简单的,在formatter中使用 </br>

    复杂的每行超过几个字后换行参考:https://www.cnblogs.com/wgl0126/p/9188406.html

        formatter:function (params) {
            var newParamsName ='';
            var title = '';
            var titleLength = params[0].name.length;
            var rowCount = 20;
            var rowNumber = Math.ceil(titleLength / rowCount);
            if(titleLength>rowCount){
              for (var i = 0; i < rowNumber; i++) {
                   var tempStr = "";
                   var start = i * rowCount;
                   var end = start + rowCount;
                   if (i == rowNumber - 1) {
                       tempStr = params[0].name.substring(start, titleLength);
                   } else {
                       tempStr = params[0].name.substring(start, end) + "</br>";
                   }
                   newParamsName += tempStr;
                }
          }else {
            newParamsName = params[0].name;
          }<br>      //返回小圆圈和后面的数量
          return (newParamsName+"</br>"
                +"<span style='display:inline-block;margin-right:5px;border-radius:10px;9px;height:9px;background-color:"+params[0]['color']+"'></span>"+
                "汇总:"+params[0]['value']);
             
    },

    使用原始geo地图

    var option = {
        ...
        geo: {
             show: true,
             map: 'beijing',  // 名称要与geojson数据中的name对应
             top: 'middle',
             ...
         },

        series: [
              {
                type: 'effectScatter',
                coordinateSystem: 'geo',  // 
                zlevel: 2,
                rippleEffect: { // 涟漪特效
                  period: 4, // 动画时间,值越小速度越快
                  brushType: 'stroke', // 波纹绘制方式 stroke, fill
                  scale: 4 // 波纹圆环最大限制,值越大波纹越大
                },
              ...
             }]
    }
      this.$echarts.registerMap('beijing', beijingMapJson)  // 注册地图,需引入地图数据 beijingMapJson
     

    使用bmap作为底图


     public/index.html中引入

    <!-- 百度地图V3 -->
    <script type="text/javascript" src="//api.map.baidu.com/api?v=3.0&ak=xxx"></script>

    vue.config.js中配置

      configureWebpack: {
        ...
        externals: {
          "BMap": "BMap",  // 百度地图
        },
        ...
    }

    npm安装echarts

    npm i echarts -S --registry=http://registry.npm.taobao.org

    xx.vue中引入

    <script>
      <!-- bmap -->
      require('echarts/extension/bmap/bmap')
    </script>

    使用

    适用于2D图表中

    var option = {
            ...
            bmap: {
              center: [116.403613,39.914687],    //  中心点
              zoom: 12,          //  放大倍数
              roam: true,
    // 2.0 http://lbsyun.baidu.com/custom/index.htm
    mapStyle: {},
    // 3.0 http://lbsyun.baidu.com/index.php?title=open/custom
    mapStyleV2: {
    styleJson: mapStyleJson
    },
    // See https://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference.html#a0b1
    mapOptions: {},
    
            },
            series: [
              {
                type: 'effectScatter',
                coordinateSystem: 'bmap',  // 
                zlevel: 2,
                rippleEffect: { // 涟漪特效
                  period: 4, // 动画时间,值越小速度越快
                  brushType: 'stroke', // 波纹绘制方式 stroke, fill
                  scale: 4 // 波纹圆环最大限制,值越大波纹越大
                },
              ...
             }]
        }

    使用mapbox做底图

    (适合自定义路线,边界)

    工具:http://geojson.io

    参考:https://segmentfault.com/a/1190000014337634

    https://blog.csdn.net/yc_1993/article/details/78521032


    npm i mapbox-gl @mapbox/mapbox-gl-language -S --registry=http://registry.npm.taobao.org
    npm i echarts-gl -S --registry=http://registry.npm.taobao.org

    xx.vue中引入

    import mapboxgl from 'mapbox-gl'
    import MapboxLanguage from '@mapbox/mapbox-gl-language'
    require('mapbox-gl/dist/mapbox-gl.css')
    global.mapboxgl = mapboxgl  // 缺少这个 echarts-gl 报错 找不到 mapboxgl
    
    import 'echarts-gl'

    使用 

    适用于3D图表中

    ...
        mounted() {
          this.init()
        },
        methods: {
          init() {
            mapboxgl.accessToken = 'xxx'  // 官网申请
          },
          setChart() {
            var option = {
              ...
                mapbox: {
                center: [116.414368,39.917801],
                zoom: 13,
                altitudeScale: 10000000,
                style: 'mapbox://styles/mapbox/dark-v9',
                postEffect: {
                  enable: true,
                  FXAA: {
                    enable: true
                  }
                },
                light: {
                  main: {
                    intensity: 1,
                    shadow: true,
                    shadowQuality: 'high'
                  },
                  ambient: {
                    intensity: 0.
                    }
                  }
                },
                series: [
                {
                    type: 'scatter3D',
                    coordinateSystem: 'mapbox',
                    zlevel: 2,
                    rippleEffect: { // 涟漪特效
                      period: 4, // 动画时间,值越小速度越快
                      brushType: 'stroke', // 波纹绘制方式 stroke, fill
                      scale: 4 // 波纹圆环最大限制,值越大波纹越大
                    },
                    ...
                  },
              ...
            }
    let chart = this.$echarts.init(document.getElementById('xxx'))
    chart.setOption(option)

              // 获取地图map对象
              const mapboxMap = chart.getModel().getComponent('mapbox3D').getMapbox()
              // 设置地图语言
              const lang = localStorage.getItem('I18N_LANG') || 'zh'
                mapboxMap.addControl(new MapboxLanguage({
                defaultLanguage: lang
              }))
              // 设置导航工具
              mapboxMap.addControl(new mapboxgl.NavigationControl())
          }
        }
    ...

    环形饼图使title,subtitle居中,垂直居中修改top的值

          title: {
              text: '总数',
              subtext: sum + 'kg',
              textStyle: {
                color: '#ccc',
                fontSize: 20,
                // align: 'center'
              },
              top: '37%',  //根据圆环大小调整
              subtextStyle: {
                fontSize: 18,
                color: ['#ff9d19']
              },
              x: 'center',
              y: 'center'
            },

    折线图,配置Y轴最小间隔为整数,刻度起始不会强制从0开始

        yAxis: {
            minInterval: 1, // 整数
            scale: true,  // y轴数据,根据数据的最大最小值进行计算
        },        

    设置Y轴分割线虚线

    yAxis: {
            type: 'value',
            name: "Nitrogen dioxide(ppb)",
            axisLine: {
                show: true,
                lineStyle: {
                    color: 'black' //左侧显示线
                }
            },
            splitLine: {
                show: true,
                lineStyle: {
                    type: 'dashed',  // Y轴分割线 虚线,默认实线
                    color: 'grey'
                }
            },
            axisLabel: {
                fontSize: 14
            }
        },

    设置渐变色

    https://gallery.echartsjs.com/editor.html?c=xtnmUAK2r

            color: {
                     type: 'linear',
                     x: 1,
                     y: 0,
                     x2: 0.5,
                     y2: 1,
                     colorStops: [{
                         offset: 1,
                         color: 'rgba(68, 145, 253, 0)'
                     }, {
                         offset: 0.5,
                         color: 'rgba(68, 145, 253, .5)'
                     }, {
                         offset: 0,
                         color: 'rgba(68, 145, 253, 1)'
                     }],
                     globalCoord: false
                  },    

    symbolSize根据value值设置

          let symbolSizeMin = 50  //图表显示的size最小值
          let symbolSizeMax = 150  //图表显示的size最大值
    
          let valueMin = Math.min.apply(Math, this.v1)  //获取要显示的数组的最小值
          let valueMax = Math.max.apply(Math, this.v1)  // 数组最大值
          
          let symbolSizeRate = (symbolSizeMax - symbolSizeMin) / (valueMax - valueMin)
          let symbolSizeMinD = symbolSizeMin - valueMin * symbolSizeRate
    
          let seriesData = []
          this.n1.forEach((item, index) => {
            seriesData.push(
              {
                'name': item,
                'value': this.v1[index],
                x: index == 0 ? 500: 0,
                y: index == 0 ? 50: 0,
                'symbolSize': this.v1[index] * symbolSizeRate + symbolSizeMinD,  // 动态设置symbolSize
                'draggable': true,
                'itemStyle': {
                    'normal': {
                        'borderColor': colors[index % colors.length],
                        'shadowColor': colors[index % colors.length],
                        'color': colors[index % colors.length],
                        'borderWidth': 4,
                        'shadowBlur': 100,
                    }
                }
              }
            )
          })
          option['series'][0]['data'] = seriesData
          console.log(series)
    
          chart.setOption(option)
    

      

    获取数组最大最小值

    let itemValue = [1,2,3,4]
    let valueMin = Math.min.apply(Math, itemValue)
    let valueMax = Math.max.apply(Math, itemValue)

    参考:

    https://echarts.apache.org/zh/option.html#yAxis.scale

    术语速查手册

    https://echarts.apache.org/zh/cheat-sheet.html

    立体柱状图:

    https://gallery.echartsjs.com/editor.html?c=x0ou4zifid

  • 相关阅读:
    UVA12125 March of the Penguins (最大流+拆点)
    UVA 1317 Concert Hall Scheduling(最小费用最大流)
    UVA10249 The Grand Dinner(最大流)
    UVA1349 Optimal Bus Route Design(KM最佳完美匹配)
    UVA1212 Duopoly(最大流最小割)
    UVA1395 Slim Span(kruskal)
    UVA1045 The Great Wall Game(二分图最佳匹配)
    UVA12168 Cat vs. Dog( 二分图最大独立集)
    hdu3488Tour(KM最佳完美匹配)
    UVA1345 Jamie's Contact Groups(最大流+二分)
  • 原文地址:https://www.cnblogs.com/ycc1/p/13856461.html
Copyright © 2011-2022 走看看