echarts数据可视化项目搭建(一)

news2024/11/26 6:04:33

目录

  • 直角坐标系
    • 通用配置项
      • tooltip
      • toolbox
      • legend
      • dataZoom
    • 柱状图常见效果
    • 折线图常见效果
    • 散点图常见效果
  • 其他坐标系
    • 饼图
      • 基本实现
      • 常见效果
    • 地图
      • 地图基本展示
      • 不同城市颜色不同
      • 地图与散点图结合
  • 雷达图
  • 仪表盘

本博客内容参考黑马课程,详细信息请参考以下网址

  • Bilibili官方黑马课程:【echarts数据可视化项目】
  • 中国矢量地图JSON文件及其接口:【阿里云】

直角坐标系

通用配置项

tooltip

提示框组件,用于配置鼠标滑过或者点击图标时的显示框

配置项描述数据类型或子配置项
tigger触发类型item、axis
tiggerOn触发时机mouseover、click
formatter格式化字符串(如"{b}的成绩是{c}")、回调函数
var option={
	tooltip:{
		trigger:'item',
		triggerOn:'click',
		//formatter:''
		formatter:function(){
			return ''
		}
	}
}

toolbox

配置项描述
saveAsImage导出图片
dataView数据视图
restore重置
dataZoom区域缩放
magicType数据图类型转换
var option={
	toolbox:{
		feature:{
		 saveAsImage:{},
		 dataView:{},
		 restore:{},
		 dataZoom:{},
		 magicType:{
		 	type:['bar','line']
		 	}
		}
	}
}

legend

图例,用于筛选系列,配合series使用

var arr1=[];
var arr2=[];
var option={
	legend:{
		data:['语文','数学']
	},
	series:[
		{
		name:'语文',
		type:'bar',
		data:arr1
		},
		{
		name:'数学',
		type:'bar',
		data:arr2
		},
	]
}

dataZoom

区域缩放

dataZoom: [
        {
          type: "silder",
          //type: "inside",
          xAxisIndex: 0,//设置缩放组件控制的是哪一个轴
        },
        {
          type: "silder",
          //type: "inside",
          yAxisIndex: 0,
          start:0,//数据窗口起始百分比
          end:50 //数据窗口结束百分比
        },
],

柱状图常见效果

<script>
  var myChart = echarts.init(document.getElementById("canvas_area"));
  var option = {
    title: {
      text: "期末考试成绩",
      link: "https://www.baidu.com",
      textStyle: {
        color: "gray",
        fontStyle: "normal",
      },
    },
    xAxis: {
      // x轴
      type: "category", //类目轴
      data: ["张三", "李四", "王五"],
    },
    yAxis: {
      //y轴
      //数值轴
      type: "value",
    },
    series: [
      //系列列表
      {
        name: "语文",
        type: "bar",
        data: [40, 50, 60],
      },
    ],
  };
  myChart.setOption(option);
</script>

效果
在这里插入图片描述

<script>
  var myChart = echarts.init(document.getElementById("canvas_area"), "light");
  var x_data = ["桂圆", "荔枝", "榴莲", "火龙果"];
  var y_data = [3.09, 6.9, 9.8, 8.8];
  var option = {
    xAxis: {
      type: "category",
      data: x_data,
    },
    yAxis: {
      type: "value",
    },
    series: [
      {
        name: "水果单价",
        type: "bar",
        data: y_data,
        markPoint: {
          data: [
            {
              type: "max",
              name: "最大值",
            },
            {
              type: "min",
              name: "最小值",
            },
          ],
        },
        markLine: {
          data: [
            {
              type: "average",
              name: "平均值",
            },
          ],
        },
        label: {
          show: true,
          position: "inside",
        },
        barWidth: "40%",
      },
    ],
  };
  myChart.setOption(option);
</script>

效果
在这里插入图片描述

折线图常见效果

series配置项
markPoint标注最大最小值
markLine标注平均值
markArea标注区间
smooth是否平滑
lineStyle曲线风格
areaStyle是否填充曲线区域
<script>
  var chartDom = document.getElementById("canvas_area");
  var myChart = echarts.init(chartDom);
  var option = {
    xAxis: {
      type: "category",
      data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
      boundaryGap: false, //是否让第一个数据点紧挨着y轴
    },
    yAxis: {
      type: "value",
      scale: true, //根据数据特征设置y轴数据范围
    },
    series: [
      {
        data: [150, 230, 224, 218, 135, 147, 260],
        type: "line",
        markPoint: {
          //标记点
          data: [
            {
              type: "max",
            },
            {
              type: "min",
            },
          ],
        },
        markLine: {
          //标记线
          data: [
            {
              type: "average",
            },
          ],
        },
        markArea: {
          //标记区间
          data: [
            [
              {
                xAxis: "Fri",
              },
              {
                xAxis: "Sun",
              },
            ],
            [
              {
                xAxis: "Mon",
              },
              {
                xAxis: "Wed",
              },
            ],
          ],
        },
        smooth: true, //是否平滑
        lineStyle: {
          //线条控制
          color: "blue",
          type: "dotted", //点状线
        },
        areaStyle: {
          //填充风格控制
          color: "pink",
        },
      },
    ],
  };
  myChart.setOption(option);
</script>

效果
在这里插入图片描述

<script>
  var myChart = echarts.init(document.getElementById("canvas_area"), "light");
  var x_data = ["桂圆", "荔枝", "榴莲", "火龙果"];
  var y_data_1 = [3.09, 6.9, 9.8, 8.8];
  var y_data_2 = [4.99, 9.88, 3.67, 8.9];
  var option = {
    label: {
      show: true,
    },
    xAxis: {
      type: "category",
      data: x_data,
    },
    yAxis: {
      type: "value",
    },
    series: [
      {
        type: "line",
        data: y_data_1,
        stack: "all",
        areaStyle: {},
      },
      {
        type: "line",
        data: y_data_2,
        stack: "all",
        areaStyle: {},
      },
    ],
  };
  myChart.setOption(option);
</script>

效果
在这里插入图片描述

散点图常见效果

数据类型
symbolSize散点的大小不同数字或回调函数(可根据此设置散点图)
itemStyle.color设置散点的颜色str或回调函数
<script>
  //生成[n,m]范围内的随机数
  function random_int(n, m) {
    var result = Math.random() * (m + 1 - n) + n;
    while (result > m) {
      result = Math.random() * (m + 1 - n) + n;
    }
    return result;
  }
  var myChart = echarts.init(document.getElementById("canvas_area"));
  var data_list = [];
  //生成随机数据
  for (var i = 0; i < 50; i++) {
    // width = Math.round(random_int(50, 100));
    // height = Math.round(random_int(150, 200) / 100);
    weight = random_int(50, 100);
    height = random_int(150, 200);
    data_list.push([height, weight]);
  }
  var option = {
    title:{
      text:'身高体重BMI参考图'	
    },
    xAxis: {
      type: "value",
      scale: true,
    },
    yAxis: {
      type: "value",
      scale: true,
    },
    //区域缩放
    dataZoom: [
      {
        type: "slider", //外置滑块缩放
        // type: "inside", 内置鼠标滚轮缩放
        xAxisIndex: 0,
      },
      {
        type: "slider",
        // type: "inside",
        yAxisIndex: 0,
      },
    ],
    //数据配置栏
    series: [
      //一个散点图
      {
        // type: "scatter",//散点图效果
        type: "effectScatter", //涟漪动画效果
        showEffectOn: "render", //涟漪动画触发时机  render:页面加载完毕后触发  emphasis:获取焦点后触发
        rippleEffect: {
          scale: 2, //控制涟漪动画大小
        },
        data: data_list,
        //回调函数,用于控制散点大小
        symbolSize: function (arg) {
          let height = arg[0] / 100;
          let weight = arg[1];
          let bmi = weight / (height * height);
          if (bmi > 28) {
            return 20;
          }
          return 5;
        },
        //控制散点风格
        itemStyle: {
          color: function (arg) {
            let height = arg.data[0] / 100;
            let weight = arg.data[1];
            let bmi = weight / (height * height);
            if (bmi > 28) {
              return "red";
            }
            return "green";
          },
        },
      },
    ],
  };
  myChart.setOption(option);
</script>

效果
在这里插入图片描述

其他坐标系

饼图

基本实现

需要提前配置数组对象data,每个数组元素都是一个字典,包含name和value两个属性

<script>
  var myChart = echarts.init(document.getElementById("canvas_area"), "light");
  var tag_list = ["鲍鱼", "海参", "多宝鱼", "沙丁鱼", "鱿鱼"];
  var data_list = [];
  //生成随机数据
  for (let i = 0; i < 5; i++) {
    data_list.push({ name: tag_list[i], value: Math.random() * 10 + 1 });
  }
  var option = {
    title: {
      text: "各类海产品耗费比重",
    },
    series: {
      type: "pie",
      data: data_list,
    },
  };
  myChart.setOption(option);
</script>

效果
在这里插入图片描述

常见效果

var option = {
    series: [
      {
        type: "pie",
        data: data,
        label: {
          show: true,
          formatter: function (arg) {
            return arg.name;
          },
        },
        //实现环状图
        //radius:20  饼图半径
        //radius:'20%' 百分比参照绘图区域长宽较小的那一部分进行半分比设置
        // radius:['50%','70%']
        //实现南丁格尔图:饼图中每个半径是不同的
        roseType: "radius",
        //选中效果
        selectedMode: "single", //'multiple'
        //选中后偏移距离
        selectedOffect:30,
       },
    ],
  };

圆环图效果
在这里插入图片描述
南丁格尔图效果
在这里插入图片描述

地图

百度地图api:申请ak

矢量地图:准备矢量地图数据

地图基本展示

步骤:

  • 准备json文件,放在json/map/目录下
  • 使用ajax获取china.json
  • 设置geo
<script>
    var myChart = echarts.init(document.getElementById("canvas"));
    var url = "https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json";
    $.get(url, function (resp) {
      //使用ajax获取矢量地图数据
      echarts.registerMap("chinamap", resp); //在ajax函数中注册地图矢量数据
      var option = {
        //配置geo的type为map
        geo: {
          type: "map",
          map: "chinamap",
          roam: true, //设置缩放以及拖动效果
          label: {
            show: true, //展示标签
          },
          zoom: 2, //设置初始化缩放比例
          //   center: [87.6, 46.79], //地图中心点坐标
        },
      };
      myChart.setOption(option);
    });
</script>

不同城市颜色不同

步骤

  • 显示基本中国地图
  • 各个城市数据传给series参数
  • 将series中的数据跟geo关联起来
<script>
    var myChart = echarts.init(document.getElementById("canvas"));
    // var url = "https://geo.datav.aliyun.com/areas_v3/bound/100000.json";
    $.get("json/map/china.json", function (resp) {
      //使用ajax获取矢量地图数据
      console.log(resp);
      let eachdata = new Array();
      for (i = 0; i < resp["features"].length; i++) {
        name = resp["features"][i]["properties"].name;
        // console.log(name);
        value = Math.round(Math.random() * 100);
        eachdata.push({ name: name, value: value });
        // console.log(eachdata);
      }
      echarts.registerMap("chinamap", resp); //在ajax函数中注册地图矢量数据
      var option = {
        //配置数据
        series: [
          {
            data: eachdata,
            geoIndex: 0, //将数据与第0个geo配置关联在一起
            type: "map",
          },
        ],
        //地图显示关键点
        visualMap: {
          min: 0,
          max: 300,
          inRange: {
            color: ["white", "red"], //设置颜色渐变效果
          },
          calculable: true, //出现滑块
        },
        //配置geo的type为map
        geo: {
          type: "map",
          map: "chinamap",
          roam: true, //设置缩放以及拖动效果
          label: {
            show: false, //展示标签
          },
          //   zoom: 2, //设置初始化缩放比例
          //   center: [87.6, 46.79], //地图中心点坐标
        },
      };
      myChart.setOption(option);
    });
</script>

效果
在这里插入图片描述

地图与散点图结合

<script>
  // series下新增一个对象
  // 准备数据散点,配置给series下的另一个对象
  var scatter_data = [
    {
      value: [117, 31],
    },
  ];
  // 配置series下的新对象type值为effectScatter
  // 指明散点图的坐标系统为geo
  // 调整涟漪动画
  var myChart = echarts.init(document.getElementById("canvas"));
  // var url = "https://geo.datav.aliyun.com/areas_v3/bound/100000.json";
  $.get("json/map/china.json", function (resp) {
    //使用ajax获取矢量地图数据
    console.log(resp);
    let eachdata = new Array();
    for (i = 0; i < resp["features"].length; i++) {
      name = resp["features"][i]["properties"].name;
      // console.log(name);
      value = Math.round(Math.random() * 100);
      eachdata.push({ name: name, value: value });
      // console.log(eachdata);
    }
    echarts.registerMap("chinamap", resp); //在ajax函数中注册地图矢量数据
    var option = {
      //配置数据
      series: [
        {
          data: eachdata,
          geoIndex: 0, //将数据与第0个geo配置关联在一起
          type: "map",
        },
        {
          data: scatter_data,//准备好散点数据
          type: "effectScatter",//配置新对象的type
          coordinateSystem: "geo",//让散点图使用地图坐标系统
          rippleEffect: {
            scale: 10,//设置涟漪效果
          },
        },
      ],
      //地图显示关键点
      visualMap: {
        min: 0,
        max: 110,
        inRange: {
          color: ["white", "red"], //设置颜色渐变效果
        },
        calculable: true, //出现滑块
      },
      //配置geo的type为map
      geo: {
        type: "map",
        map: "chinamap",
        roam: true, //设置缩放以及拖动效果
        label: {
          show: false, //展示标签
        },
        //   zoom: 2, //设置初始化缩放比例
        //   center: [87.6, 46.79], //地图中心点坐标
      },
    };
    myChart.setOption(option);
  });
</script>

效果
在这里插入图片描述

雷达图

常常展示某一个事物在各个方面的性能

 <script>
   var mychart = echarts.init(document.getElementById("canvas_area"));
   var dataArr = new Array();//数组,用于设置每个维度上的最大值等信息
   var test_data = ["口感", "充饥度", "色泽", "香味", "耗材"];
   for (i = 0; i < 5; i++) {
     dataArr.push({ name: test_data[i], max: 60 });
   }
   var option = {
     legend: {
       data: ["水果蛋挞", "水煮三文鱼"],
     },
     radar: {
       indicator: dataArr,
       shape: "circle", //设置雷达图形状  polygon表示多边形(默认)
     },
     series: [
       {
         type: "radar",
         label: {
           show: true, //是否显示数值
         },
         areaStyle: {},//是否显示阴影面积
         data: [
           {
             name: "水果蛋挞",
             value: [20, 30, 19, 30, 40],
           },
           {
             name: "水煮三文鱼",
             value: [50, 39, 29, 10, 20],
           },
         ],
       },
     ],
   };
   mychart.setOption(option);
 </script>

最终效果
在这里插入图片描述

仪表盘

主要用于进度把控以及数据范围监测

<script>
  var myChart = echarts.init(document.getElementById("canvas_area"));
  var option = {
    series: [
      {
        type: "gauge",
        label: {
          show: false,
        },

        data: [
          {
            value: 67, //每个对象代表一个指针
            //   itemStyle: {
            //     color: "pink",设置每个仪表盘的style
            //   },
          },
          // {
          //   value: 45,
          //   itemStyle: {
          //     color: "green",
          //   },
          // },
        ],
        min: 20,
        max: 80, //仪表盘最大最小值
      },
    ],
  };
  myChart.setOption(option);
</script>

最终效果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/181122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apache Superset 开源商业智能大数据可视化

Apache Superset 是一款现代化的开源大数据工具&#xff0c;也是企业级商业智能 Web 应用&#xff0c;用于数据探索分析和数据可视化。 Apache Superset 是一个适合企业日常生产环境中使用的商业智能可视化工具。它具有快速、轻量、直观的特点&#xff0c;任何用户都可以轻松地…

Spring Boot学习之Shiro

文章目录零 全部源码地址一 Shiro简介1.1 Shiro功能1.2 Shiro架构&#xff08;外部视角&#xff09;1.3 Shiro架构&#xff08;内部视角&#xff09;二 Shiro快速入门2.1 演示代码&部分源码解读三 Spring Boot集成Shio3.0 准备操作3.1 整合Shiro3.2 页面拦截实现3.3 登录认…

ESP32设备驱动-HMC5983磁力计驱动

HMC5983磁力计驱动 1、HMC5983介绍 霍尼韦尔 HMC5983 是一款温度补偿型三轴集成电路磁力计。这种表面贴装、多芯片模块专为汽车和个人导航、车辆检测和指向等应用的低场磁场传感而设计。 HMC5983 包括我们最先进的高分辨率 HMC118X 系列磁阻传感器和一个 ASIC,该 ASIC 包含…

AOP切面编程

前言&#xff1a;AOP&#xff08;Aspect Oriented Programming&#xff09;是一种设计思想&#xff0c;是软件设计领域中的面向切面编程&#xff0c;它是面向对象编程的一种补充和完善&#xff0c;它以通过预编译方式和运行期动态代理方式实现在不修改源代码的情况下给程序动态…

各种Sequence Self-Attention变形 (加速矩阵运算 且保证全局特征)

人工设计Self-attention的N*N矩阵1. Local Attention/Truncated Attention2. Stride Attention3. Global Attention人工设计Self Attention的使用与选择1.LongFomer2.Big Bird自动设计Self Attention的N*N矩阵1. Reformer2.Sinkborn Sorting Network不需要N*N大小的矩阵1.Linfo…

【python】图片转字符画 cv2+pygame实现

网上看到一些字符画,非常羡慕,想要用python写一个类似的东西,突然想到字符画不就是把图片分割为像素块再进行替换嘛 恰好之前稍稍入门了python的opencv库,可以对图片进行处理。 处理图片的思想为:对一个区域的像素进行参考值计算,用具有相似参考值的字符进行替代,因此除…

打工人必学的法律知识(七)——《中华人民共和国劳动合同法实施条例》

目录 来源 第一章 总 则 第二章 劳动合同的订立 第三章 劳动合同的解除和终止 第四章 劳务派遣特别规定 第五章 法津责任 第六章 附 则 来源 《中华人民共和国劳动合同法实施条例》 第一章 总 则 第一条 为了贯彻实施《中华人民共和国劳动合同法》&#xff08;以下简称…

mybatis说明

目录 1.说明 2.配置文件 3.映射器 4.select标签 5.insert标签 6.update标签 7.delete标签 8.resultMap的特别说明 9.注解 10.关联(级联)查询 11.动态sql 12.mybatis分页 13缓存 1.说明 MyBatis 是一个开源、轻量级的数据持久化框架&#xff0c;是 JDBC 和 Hiberna…

Redis学习笔记:数据结构和命令

本文是自己的学习笔记。主要参考资料如下&#xff1a; 马士兵 4、Redis的五大数据类型1.1、String1.1.1、String 类型的命令1.1.2、存储对象1.2、List1.2.1、List基本命令1.2.2、List高级命令1.3、Set1.3.1、Set基本命令1.4、HashMap1.4.1、HashMap基本命令1.5、ZSet&#xff0…

【数据结构】7.4 散列表的查找

文章目录7.4.1 散列表的基本概念7.4.2 散列函数的构造散列函数的构造方法7.4.3 处理冲突的方法1. 开地址法1.1 线性探测法1.2 二次探测法2. 链地址法7.4.4 散列表的查找散列表的查找效率分析总结7.4.1 散列表的基本概念 基本思想&#xff1a;根据要存储的关键字的值&#xff0…

计算机网络-杂项

目录 1、蜂窝移动网络 2、TCP和UDP 3、5层架构 4、在浏览器中输入url地址显示主页的过程 5、TCP的基本操作 6、三次握手&#xff0c;四次挥手 6.1、三次握手&#xff1a;双方保证自己和对方都能接收和发送数据。 6.2、三次握手中&#xff0c;为什么客户机最后还要再向服…

【计算机网络】应用层体系

我们知道现代常用的计算机网络模型为5层模型&#xff0c;其中应用层是直接与我们平时常见的软件对接的最高层&#xff0c;所以先来学习应用层就显得很有必要了。其中在应用层我们需要学习网络应用程序的实现、原理并且了解网络应用程序所需要的网络服务、客户和服务器、进程和运…

DW 2023年1月Free Excel 第七次打卡 动态函数

第七章 Excel函数-动态函数 数据下载地址与参考链接&#xff1a;https://d9ty988ekq.feishu.cn/docx/Wdqld1mVroyTJmxicTTcrfXYnDd 1.FILTER函数 在工作中&#xff0c;根据指定的条件&#xff0c;将符合条件的所有记录从数据源表格式查找过来&#xff0c;一是可以用高级筛选。…

两个实用的shell命令:sed和awk用法

&#x1f34e;作者&#xff1a;阿润菜菜 &#x1f4d6;专栏&#xff1a;Linux系统编程 本文目录 sed的用法 sed常用场景 awk的用法 awk常用场景 我们先来看一下力扣上的shell题库中的一题&#xff1a; 实现这个功能一般来说我们会想到tail和head命令来指定打印前几行或者后几…

string的模拟实现(下)

目录 string的模拟实现下 析构函数&#xff1a; 完善函数 空对象的构造函数&#xff1a; 头插函数的一些修正&#xff1a; 构造函数的完善&#xff1a; 实现append 插入函数&#xff1a; 插入函数(字符串&#xff09; erase删除函数&#xff1a; 实现find函数&#…

【读论文】Spiking-YOLO Spiking Neural Network for Energy-Efficient Object Detection

AAAI-20 摘要 本文提出两个新方法为深度SNN提供快速、准确的信息传递&#xff1a;通道归一化和具有不平衡阈值的带符号神经元&#xff1b;本文也提出了一个基于脉冲的目标检测模型&#xff1a;Spiking-YOLO&#xff0c;并且在non-trivial datasets, PASCALVOC 和 MS COCO数据…

指针与数组

目录指针运算&#xff08;补&#xff09;指针指针指针的关系运算&#xff08;补&#xff09;指针与数组数组名二级指针指针数组指针运算&#xff08;补&#xff09; 指针指针 上一篇博客我们介绍了指针运算中的三种常见运算&#xff1a;指针整数&#xff0c;指针关系运算&…

23.1.27打卡 Codeforces Round #846 (Div. 2) A~D

https://codeforces.com/contest/1780A题给你一个长度为n的数组, 问你是否能找出三个数字, 使得这三个数字之和为奇数简单的小学数学奇偶奇偶偶偶所以我们只要找到三个奇数或者两个偶数一个奇数就好了/* ⣿⣿⣿⣿⣿⣿⡷⣯⢿⣿⣷⣻⢯⣿⡽⣻⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿…

简单复现 残差网络、Googlenet、mobilenet、SqueezeNet、ShuffleNet

1.残差网络 1&#xff09;网络结构 当对x求偏导的时候&#xff0c;F&#xff08;x&#xff09;对x求偏导的值很小的时候&#xff0c;对整体求x的偏导会接近于1 这样解决了梯度消失问题&#xff0c;我们可以对离输入很近的层进行很好的更新。 要注意的是F&#xff08;x&#…

【REACT-redux】

1. redux介绍 1.1 描述 Redux最主要是用作应用状态的管理。简言之&#xff0c;Redux用一个单独的常量状态树&#xff08;state对象&#xff09;保存这一整个应用的状态&#xff0c;这个对象不能直接被改变。当一些数据变化了&#xff0c;一个新的对象就会被创建&#xff08;使…