• 如何在本地使用echarts中gallery案例 附详细代码


    已物流集散数字可视化平台为例  地址:https://www.makeapie.com/editor.html?c=xi0oVHZhbd

     

    一:确保本地已经下载了echarts文件 ,示例中我是通过cdn引入的,具体情况根据项目走,可以打包下载引入等方式使用echarts

     <script
          crossorigin="anonymous"
          integrity="sha512-q0nIjE1LHEOioBDYuyhml+xxTm+ftiPuzdWgEgwq5g3YAZ5CWDmjDUs4t7pFeWnvFQe7eLQg/+PepPbacIDtkA=="
          src="https://lib.baomitu.com/echarts/4.9.0-rc.1/echarts.min.js"
        ></script>

    二:分析echarts案例中使用了哪些数据哪些技术

    示例中使用了 一个(/asset/get/s/data-1528971808162-BkOXf61WX.json )json数据文件和$ 选择器,所以接下来需要做两件事

    三:下载这个json数据  http://gallery.echartsjs.com/asset/get/s/data-1528971808162-BkOXf61WX.json  

        具体详细的下载方法请看我的这个博客,地址:https://www.cnblogs.com/m1754171640/p/14184904.html

       如图我已下载好这个json文件

    四、因为案例中用到了$,所以我下载了jquery,具体问题具体分析,案例是使用$(function(){}) 去自调用这个方法,比如vue中就可以直接写个方法,然后在mouted中调用即可

    示例中我通过cdn引入jquery

       <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>

     

    五、为echarts准备一个具有宽高的Dom

     <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
        <div id="main" style=" 100%; height: 600px;"></div>

    六、js代码书写

    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('main'));

    这里直接把案例中的代码copy到这里

    
    

     注意:如果copy里的代码没有 myChart.setOption(xxx)这句话,需要在js最后加入这句话,这里面copy的代码是有这个话,所有不用额外在写了

    七、详细的代码如下

    
    
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8" />
        <title>全国物流</title>
        <script
          crossorigin="anonymous"
          integrity="sha512-q0nIjE1LHEOioBDYuyhml+xxTm+ftiPuzdWgEgwq5g3YAZ5CWDmjDUs4t7pFeWnvFQe7eLQg/+PepPbacIDtkA=="
          src="https://lib.baomitu.com/echarts/4.9.0-rc.1/echarts.min.js"
        ></script>  
        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
      </head>

      <body>
        <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
        <div id="main" style=" 100%; height: 600px;"></div>
        <script type="text/javascript">
          var myChart = echarts.init(document.getElementById("main"));
     
          var uploadedDataURL = "data-1528971808162-BkOXf61WX.json"; //刚刚下载的json文件  我的文件是和这个html在同一个目录下的所以直接引用的,具体的需要看文件存放路径的

          //如果想要修改,请点击上方克隆,然后在自己的版本上修改,不要在lz的版本上改!!
          // 可视化配色
          //线条的汇集点坐标
          var geoGpsMap = [103.5901, 36.3043];
          var t = 1; //流入流出控制
          var r = 1; //右侧流入流出文字控制
          var geoCoordMap = {
            江苏: [118.8062, 31.9208],
            黑龙江: [127.9688, 45.368],
            内蒙古: [110.3467, 41.4899],
            吉林: [125.8154, 44.2584],
            北京市: [116.4551, 40.2539],
            辽宁: [123.1238, 42.1216],
            河北: [114.4995, 38.1006],
            天津: [117.4219, 39.4189],
            山西: [112.3352, 37.9413],
            陕西: [109.1162, 34.2004],
            甘肃: [103.5901, 36.3043],
            宁夏: [106.3586, 38.1775],
            青海: [101.4038, 36.8207],
            新疆: [87.9236, 43.5883],
            四川: [103.9526, 30.7617],
            重庆: [108.384366, 30.439702],
            山东: [117.1582, 36.8701],
            河南: [113.4668, 34.6234],
            安徽: [117.29, 32.0581],
            湖北: [114.3896, 30.6628],
            浙江: [119.5313, 29.8773],
            福建: [119.4543, 25.9222],
            江西: [116.0046, 28.6633],
            湖南: [113.0823, 28.2568],
            贵州: [106.6992, 26.7682],
            云南: [102.9199, 25.4663],
            广东: [113.12244, 23.009505],
            广西: [108.479, 23.1152],
            海南: [110.3893, 19.8516],
            上海: [121.4648, 31.2891],
            西藏: [91.11, 29.97],
          };

          var d1 = {
            江苏: 10041,
            黑龙江: 4093,
            内蒙古: 1157,
            吉林: 4903,
            北京市: 2667,
            辽宁: 8331,
            河北: 23727,
            天津: 681,
            山西: 5352,
            陕西: 38,
            甘肃: 77,
            宁夏: 65,
            青海: 10,
            新疆: 22000,
            四川: 309,
            重庆: 77,
            山东: 21666,
            河南: 15717,
            安徽: 15671,
            湖北: 3714,
            浙江: 3141,
            福建: 955,
            江西: 4978,
            湖南: 778,
            贵州: 33,
            云南: 149,
            广东: 1124,
            广西: 125,
            海南: 7,
            上海: 2155,
            西藏: 0,
          };

          var d2 = {
            江苏: 159,
            黑龙江: 5,
            内蒙古: 54,
            吉林: 10,
            北京市: 0,
            辽宁: 0,
            河北: 1679,
            天津: 1,
            山西: 2698,
            陕西: 1744,
            甘肃: 362,
            宁夏: 429,
            青海: 122,
            新疆: 731,
            四川: 3925,
            重庆: 1480,
            山东: 79,
            河南: 1017,
            安徽: 208,
            湖北: 1209,
            浙江: 1418,
            福建: 1237,
            江西: 1004,
            湖南: 1511,
            贵州: 345,
            云南: 1429,
            广东: 2242,
            广西: 2271,
            海南: 59,
            上海: 8,
            西藏: 0,
          };

          var d3 = {
            江苏: 11788,
            黑龙江: 1944,
            内蒙古: 2954,
            吉林: 3482,
            北京市: 1808,
            辽宁: 5488,
            河北: 27035,
            天津: 2270,
            山西: 13623,
            陕西: 4221,
            甘肃: 754,
            宁夏: 1783,
            青海: 91,
            新疆: 1907,
            四川: 4905,
            重庆: 1420,
            山东: 39781,
            河南: 16154,
            安徽: 7914,
            湖北: 6802,
            浙江: 5812,
            福建: 3345,
            江西: 4996,
            湖南: 5627,
            贵州: 1504,
            云南: 2725,
            广东: 6339,
            广西: 1009,
            海南: 0,
            上海: 1988,

            西藏: 0,
          };

          var d4 = {
            江苏: 10041,
            黑龙江: 4093,
            内蒙古: 1157,
            吉林: 4903,
            北京市: 2667,
            辽宁: 8331,
            河北: 23727,
            天津: 681,
            山西: 5352,
            陕西: 38,
            甘肃: 77,
            宁夏: 65,
            青海: 10,
            新疆: 193,
            四川: 309,
            重庆: 77,
            山东: 21666,
            河南: 15717,
            安徽: 15671,
            湖北: 3714,
            浙江: 3141,
            福建: 955,
            江西: 4978,
            湖南: 778,
            贵州: 33,
            云南: 149,
            广东: 1124,
            广西: 125,
            海南: 7,
            上海: 2155,
            西藏: 0,
          };

          var d5 = {
            江苏: 159,
            黑龙江: 5,
            内蒙古: 54,
            吉林: 10,
            北京市: 0,
            辽宁: 0,
            河北: 1679,
            天津: 1,
            山西: 2698,
            陕西: 1744,
            甘肃: 362,
            宁夏: 429,
            青海: 122,
            新疆: 731,
            四川: 3925,
            重庆: 1480,
            山东: 79,
            河南: 1017,
            安徽: 208,
            湖北: 1209,
            浙江: 1418,
            福建: 1237,
            江西: 1004,
            湖南: 1511,
            贵州: 345,
            云南: 1429,
            广东: 2242,
            广西: 2271,
            海南: 59,
            上海: 8,
            西藏: 0,
          };

          var d6 = {
            江苏: 11788,
            黑龙江: 1944,
            内蒙古: 2954,
            吉林: 3482,
            北京市: 1808,
            辽宁: 5488,
            河北: 27035,
            天津: 2270,
            山西: 13623,
            陕西: 4221,
            甘肃: 754,
            宁夏: 1783,
            青海: 91,
            新疆: 1907,
            四川: 4905,
            重庆: 1420,
            山东: 39781,
            河南: 16154,
            安徽: 7914,
            湖北: 6802,
            浙江: 5812,
            福建: 3345,
            江西: 4996,
            湖南: 5627,
            贵州: 1504,
            云南: 2725,
            广东: 6339,
            广西: 1009,
            海南: 0,
            上海: 1988,
            西藏: 0,
          };

          var colors = [
            "#1DE9B6",
            "#EEDD78",
            "#32C5E9",
            "#FFDB5C",
            "#37A2DA",
            "#04B9FF",
          ];
          var colorIndex = 0;
          $(function () {
            var year = [
              "2020-07",
              "2020-08",
              "2020-09",
              "2020-10",
              "2020-11",
              "2020-12",
            ];
            var mapData = [[], [], [], [], [], []];

            /*柱子Y名称*/
            var categoryData = [];
            var barData = [];

            for (var key in geoCoordMap) {
              mapData[0].push({
                year: "2020-01",
                name: key,
                value: d1[key] / 100,
                value1: d1[key] / 100,
              });
              mapData[1].push({
                year: "2020-02",
                name: key,
                value: d2[key] / 100,
                value1: d2[key] / 100,
              });
              mapData[2].push({
                year: "2020-03",
                name: key,
                value: d3[key] / 100,
                value1: d3[key] / 100,
              });
              mapData[3].push({
                year: "2020-04",
                name: key,
                value: d4[key] / 100,
                value1: d4[key] / 100,
              });
              mapData[4].push({
                year: "2020-05",
                name: key,
                value: d5[key] / 100,
                value1: d5[key] / 100,
              });
              mapData[5].push({
                year: "2020-06",
                name: key,
                value: d6[key] / 100,
                value1: d6[key] / 100,
              });
            }

            for (var i = 0; i < mapData.length; i++) {
              mapData[i].sort(function sortNumber(a, b) {
                return a.value - b.value;
              });
              barData.push([]);
              categoryData.push([]);
              for (var j = 0; j < mapData[i].length; j++) {
                barData[i].push(mapData[i][j].value1);
                categoryData[i].push(mapData[i][j].name);
              }
            }

            $.getJSON(uploadedDataURL, function (geoJson) {
              $("body").css({
                background: "#0D1223",
                position: "fixed",
                top: 0,
                left: 0,
                 "100%",
                height: "100%",
                "background-size": "cover",
                "-webkit-background-size": "cover",
                "-o-background-size": "cover",
                "background-position": "center 0",
                //'writing-mode': 'vertical-rl'
              });

              echarts.registerMap("china", geoJson);
              var convertData = function (data) {
                var res = [];
                for (var i = 0; i < data.length; i++) {
                  var geoCoord = geoCoordMap[data[i].name];
                  if (geoCoord) {
                    res.push({
                      name: data[i].name,
                      value: geoCoord.concat(data[i].value),
                    });
                  }
                }
                return res;
              };

              var convertToLineData = function (data, gps) {
                var res = [];
                for (var i = 0; i < data.length; i++) {
                  var dataItem = data[i];
                  var toCoord = geoCoordMap[dataItem.name];
                  var fromCoord = gps; //郑州
                  //  var toCoord = geoGps[Math.random()*3];
                  if (fromCoord && toCoord) {
                    if (t == 1) {
                      res.push([
                        {
                          coord: toCoord,
                        },
                        {
                          coord: fromCoord,
                          value: dataItem.value,
                        },
                      ]);
                    } else {
                      res.push([
                        {
                          coord: fromCoord,
                          value: dataItem.value,
                        },
                        {
                          coord: toCoord,
                        },
                      ]);
                    }
                  }
                }
                if (t == 0) {
                  t = 1;
                } else {
                  t = 0;
                }
                return res;
              };

              optionXyMap01 = {
                timeline: {
                  data: year,
                  axisType: "category",
                  autoPlay: true,
                  playInterval: 5000,
                  left: "10%",
                  right: "10%",
                  bottom: "3%",
                   "80%",
                  //  height: null,
                  label: {
                    normal: {
                      textStyle: {
                        color: "#ddd",
                      },
                    },
                    emphasis: {
                      textStyle: {
                        color: "#fff",
                      },
                    },
                  },
                  symbolSize: 10,
                  lineStyle: {
                    color: "#555",
                  },
                  checkpointStyle: {
                    borderColor: "#777",
                    borderWidth: 2,
                  },
                  controlStyle: {
                    showNextBtn: true,
                    showPrevBtn: true,
                    normal: {
                      color: "#666",
                      borderColor: "#666",
                    },
                    emphasis: {
                      color: "#aaa",
                      borderColor: "#aaa",
                    },
                  },
                },
                baseOption: {
                  animation: true,
                  animationDuration: 1000,
                  animationEasing: "cubicInOut",
                  animationDurationUpdate: 1000,
                  animationEasingUpdate: "cubicInOut",
                  grid: {
                    right: "2%",
                    top: "10%",
                    bottom: "10%",
                     "18%",
                  },
                  tooltip: {
                    trigger: "axis", // hover触发器
                    axisPointer: {
                      // 坐标轴指示器,坐标轴触发有效
                      type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
                      shadowStyle: {
                        color: "rgba(150,150,150,0.1)", //hover颜色
                      },
                    },
                  },
                  visualMap: {
                    min: 0,
                    max: 250,
                    left: "left",
                    top: "bottom",
                    text: ["高", "低"],
                    textStyle: {
                      color: "white",
                    },
                    calculable: true,
                    colorLightness: [0.8, 100],
                    color: ["#FF6F00", "#FFA800", "#FFFFFF"],
                    dimension: 0,
                  },
                  geo: {
                    show: true,
                    map: "china",
                    roam: true,
                    zoom: 1,
                    center: [113.83531246, 34.0267395887],
                    label: {
                      emphasis: {
                        show: true,
                      },
                    },
                    itemStyle: {
                      normal: {
                        borderColor: "#00FFE5",
                        borderWidth: 1,
                        areaColor: {
                          type: "radial",
                          x: 0.5,
                          y: 0.5,
                          r: 0.8,
                          colorStops: [
                            {
                              offset: 0,
                              color: "rgba(0, 255, 255, 0.1)", // 0% 处的颜色
                            },
                            {
                              offset: 1,
                              color: "rgba(0, 255, 255, 0.1)", // 100% 处的颜色
                            },
                          ],
                          globalCoord: false, // 缺省为 false
                        },
                        shadowColor: "#00FFFF",
                        // shadowColor: 'rgba(255, 255, 255, 1)',
                        shadowOffsetX: 2,
                        shadowOffsetY: 4,
                        shadowBlur: 12,
                      },
                      emphasis: {
                        areaColor: "#389BB7",
                        borderWidth: 0,
                      },
                    },
                  },
                },
                options: [],
              };

              for (var n = 0; n < year.length; n++) {
                var statistic_name = "各省" + (r == 1 ? "入" : "出") + "物流";
                optionXyMap01.options.push({
                  title: [
                    {
                      text: "物流集散数字可视化平台",
                      //subtext: '   ',
                      left: "25%",
                      top: "1%",
                      textStyle: {
                        color: "#fff",
                        fontSize: 25,
                      },
                    },
                    {
                      id: "statistic",
                      text: statistic_name,
                      left: "75%",
                      top: "3%",
                      textStyle: {
                        color: "#fff",
                        fontSize: 16,
                      },
                    },
                  ],
                  xAxis: {
                    type: "value",
                    scale: true,
                    position: "top",
                    min: 0,
                    boundaryGap: false,
                    splitLine: {
                      show: false,
                    },
                    axisLine: {
                      show: false,
                    },
                    axisTick: {
                      show: false,
                    },
                    axisLabel: {
                      margin: 1,
                      textStyle: {
                        color: "#aaa",
                      },
                    },
                  },
                  yAxis: {
                    type: "category",
                    //  name: 'TOP 20',
                    nameGap: 16,
                    axisLine: {
                      show: true,
                      lineStyle: {
                        color: "#ddd",
                      },
                    },
                    axisTick: {
                      show: false,
                      lineStyle: {
                        color: "#ddd",
                      },
                    },
                    axisLabel: {
                      interval: 0,
                      textStyle: {
                        color: "#ddd",
                      },
                    },
                    data: categoryData[n],
                  },

                  series: [
                    //未知作用
                    {
                      //文字和标志
                      name: "light",
                      type: "scatter",
                      coordinateSystem: "geo",
                      data: convertData(mapData[n]),
                      symbolSize: function (val) {
                        return 6;
                      },
                      label: {
                        normal: {
                          formatter: "{b}",
                          position: "right",
                          show: true,
                        },
                        emphasis: {
                          show: true,
                        },
                      },
                      itemStyle: {
                        normal: {
                          color: colors[n],
                        },
                      },
                    },
                    //地图?
                    {
                      type: "map",
                      map: "china",
                      geoIndex: 0,
                      aspectScale: 1, //长宽比
                      showLegendSymbol: false, // 存在legend时显示
                      label: {
                        normal: {
                          show: false,
                        },
                        emphasis: {
                          show: false,
                          textStyle: {
                            color: "#fff",
                          },
                        },
                      },
                      roam: true,
                      itemStyle: {
                        normal: {
                          areaColor: "#031525",
                          borderColor: "#FFFFFF",
                        },
                        emphasis: {
                          areaColor: "#2B91B7",
                        },
                      },
                      animation: false,
                      data: mapData,
                    },
                    //地图点的动画效果
                    {
                      //  name: 'Top 5',
                      type: "effectScatter",
                      coordinateSystem: "geo",
                      data: convertData(
                        mapData[n]
                          .sort(function (a, b) {
                            return b.value - a.value;
                          })
                          .slice(0, 20)
                      ),
                      symbolSize: function (val) {
                        return 5;
                      },
                      showEffectOn: "render",
                      rippleEffect: {
                        brushType: "stroke",
                      },
                      hoverAnimation: true,
                      label: {
                        normal: {
                          formatter: "{b}",
                          position: "right",
                          show: true,
                        },
                      },
                      itemStyle: {
                        normal: {
                          color: colors[n],
                          shadowBlur: 10,
                          shadowColor: colors[n],
                        },
                      },
                      zlevel: 1,
                    },
                    //地图线的动画效果
                    {
                      type: "lines",
                      zlevel: 2,
                      effect: {
                        show: true,
                        period: 5, //箭头指向速度,值越小速度越快
                        trailLength: 0.2, //特效尾迹长度[0,1]值越大,尾迹越长重
                        symbol: "arrow", //箭头图标
                        symbolSize: 6, //图标大小
                      },
                      lineStyle: {
                        normal: {
                          color: colors[n],
                           1, //尾迹线条宽度
                          opacity: 0.2, //尾迹线条透明度
                          curveness: 0.3, //尾迹线条曲直度
                        },
                      },
                      data: convertToLineData(mapData[n], geoGpsMap),
                    },
                    //柱状图
                    {
                      zlevel: 1.5,
                      type: "bar",
                      barMaxWidth: 8,
                      symbol: "none",
                      itemStyle: {
                        normal: {
                          color: colors[n],
                          barBorderRadius: [0, 30, 30, 0],
                        },
                      },
                      data: barData[n],
                    },
                  ],
                });
                if (r == 0) {
                  r = 1;
                } else {
                  r = 0;
                }
              }
              myChart.setOption(optionXyMap01);
            });
          });
        </script>
      </body>
    </html>
     

    八、效果图

  • 相关阅读:
    最长公共子序列问题LCS
    [LuoguP2900] [USACO08MAR]土地征用(Land Acquisition)
    [LuoguP3195] [HNOI2008]玩具装箱TOY
    $Yeasion$的码风修改历程
    点分治模板
    Poj2919 Crane
    Poj2010 Moo University
    Kuhn-Munkres算法
    Uva10791 Minimum Sum LCM
    P1018 乘积最大(高精度加/乘)
  • 原文地址:https://www.cnblogs.com/m1754171640/p/14185362.html
Copyright © 2020-2023  润新知