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

news2025/4/9 1:29:19

目录

  • 主题设置
    • 默认主题
      • 重点
      • 示例
    • 自定义主题
  • 调色盘
    • 主题
    • 全局
    • 局部
    • 颜色渐变
  • 可视化图表自适应
    • 重点
    • 示例
  • 实现简单的加载动画
    • 重点
    • 示例
  • 增量动画实现
    • 重点
    • 示例
  • 简单动画配置项
  • 关于全局echarts对象和echartsInstance对象
    • echarts.connect()
    • 其他echarts实例对象方法

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

  • Bilibili官方黑马课程:【echarts数据可视化项目】

主题设置

默认主题

重点

//通过echarts.init方法设置light、dark两种默认主题
echarts.init(document.getElementById("canvas_area"),"dark")

示例

<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.1/echarts.js"></script>
    <title>柱状图</title>
  </head>
  <body>
    <div style="width: 600px; height: 400px" id="canvas_area"></div>
  </body>
  <script>
    var myChart = echarts.init(document.getElementById("canvas_area"), "dark"); //暗色主题
    // var myChart = echarts.init(document.getElementById("canvas_area"), "light");//亮色主题
    var option = {
      title: {
        text: "期末考试成绩",
        link: "https://www.baidu.com",
        textStyle: {
          color: "gray",
          fontStyle: "normal",
        },
      },
      xAxis: {
        // x轴
        type: "category", //类目轴
        data: ["张三", "李四", "王五"],
      },
      tooltip: {},
      yAxis: {
        //y轴
        //数值轴
        type: "value",
      },
      series: [
        //系列列表
        {
          name: "语文",
          type: "bar",
          data: [40, 50, 60],
        },
      ],

      // myChart.setOption(option);
    };
    myChart.setOption(option);
  </script>
</html>

效果

在这里插入图片描述

自定义主题

步骤

  • 在【echarts自定义主题】编辑器中编辑主题
    在这里插入图片描述
  • 下载js文件
  • 引入js文件
  • 在init中引入

调色盘

一组颜色,图形、主题等都会自动从中选择颜色

主题

自定义主题时,其中的调色盘

全局

配置在Option配置项中

var option={
  color:['red','green',...]
  ...
}

局部

设置在series配置项中

 var option={
 	series:[{
 		type:'bar',
 		color:['red','green',...],
 		...
 	}]
 }

颜色渐变

线性渐变

itemStyle:{
	color:{
		type:'linear',
		x:0,
		y:0,
		x2:0,
		y2:1,
		colorStops:[{
			offset:0,
			color:'gray'
		},{
			offset:1,
			color:'green'
		}],
	}
}

效果
在这里插入图片描述

径向渐变

itemStyle:{
	color:{
		type:'radial',
		x:0.5,
		y:0.5,
		r:0.5,
		colorStops:[{
			offset:0,
			color:'gray'
		},{
			offset:1,
			color:'green'
		}]
	}
}

效果
在这里插入图片描述

可视化图表自适应

重点

//写法一:监听窗口变化事件并调用echarts中的resize()函数
// window.onresize = function () {
//   myChart.resize();
// };
//写法二
window.onresize = myChart.resize;

示例

<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);
  //图表随着浏览器窗口大小自适应变化,写法一
  // window.onresize = function () {
  //   myChart.resize();
  // };
  //写法二
  window.onresize = myChart.resize;
</script>

效果
在这里插入图片描述

实现简单的加载动画

重点

// myChart.showLoading();两者在合适的时机进行显示和隐藏
// myChart.hideLoading();

示例

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>地图实现</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.1/echarts.js"></script>
  </head>
  <body>
    <div id="canvas" style="width: 600px; height: 400px"></div>
  </body>
  <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_full.json";
    myChart.showLoading();//ajax请求前显示加载动画
    $.get(url, function (resp) {
      myChart.hideLoading();//数据请求成功后隐藏加载动画
      //使用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",
            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, //展示标签
          },
        },
      };
      myChart.setOption(option);
    });
  </script>
</html>

效果
在这里插入图片描述

增量动画实现

重点

//在数据更新之后,生成新的Option,然后使用echarts的setOption进行数据更新
//注意,新生成的option与原option是合并关系而并非覆盖关系
$("#add-data").click(function () {
  name_list.push("小张");
  data_list.push(90);
  var option = {
    xAxis: {
      data: name_list,
    },
    series: [
      {
        data: data_list,
      },
    ],
  };
  myChart.setOption(option);
});

示例

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/echarts/5.4.1/echarts.js"></script>
    <title>柱状图之增量动画</title>
  </head>
  <body>
    <div style="width: 600px; height: 400px" id="canvas_area"></div>
    <!-- <div id="canvas_area" style="height: 400px"></div> -->
    <button id="change-data">改变数据</button>
    <button id="add-data">增加数据</button>
  </body>
  <script>
    var myChart = echarts.init(document.getElementById("canvas_area"));
    var name_list = ["张三", "李四", "王五"];
    var data_list = [40, 50, 60];
    var option = {
      title: {
        text: "期末考试成绩",
        link: "https://www.baidu.com",
        textStyle: {
          color: "gray",
          fontStyle: "normal",
        },
      },
      xAxis: {
        // x轴
        type: "category", //类目轴
        data: name_list,
      },
      yAxis: {
        //y轴
        //数值轴
        type: "value",
      },
      series: [
        //系列列表
        {
          name: "语文",
          type: "bar",
          data: data_list,
          markPoint: {
            data: [
              {
                type: "max",
                name: "最大值",
              },
              {
                type: "min",
                name: "最小值",
              },
            ],
          },
          markLine: {
            data: [
              {
                type: "average",
                name: "平均值",
              },
            ],
          },
          label: {
            show: true,
            position: "inside",
          },
        },
      ],
    };
    myChart.setOption(option);
    $("#add-data").click(function () {
      name_list.push("小张");
      data_list.push(90);
      var option = {
        xAxis: {
          data: name_list,
        },
        series: [
          {
            data: data_list,
          },
        ],
      };
      myChart.setOption(option);
    });
    $("#change-data").click(function () {
      data_list = [40, 50, 90];
      var option = {
        series: [
          {
            data: data_list,
          },
        ],
      };
      myChart.setOption(option);
    });
  </script>
</html>

效果
在这里插入图片描述

简单动画配置项

var option={
	animation:true;//动画是否开启
	//animationDuration:2000,//动画时长,单位:毫秒
	animationDuration:function(arg){
		return 2000*arg;
	},
	animationEasing:'linear',//动画变化是否均匀 bounceOut回弹效果
	...
}

关于全局echarts对象和echartsInstance对象

var myChart = echarts.init(document.getElementById("canvas_area"));

全局echarts对象就是通过引入js文件后可直接使用的对象,如上面的echarts
echartsInstance对象就是调用echarts.init()方法返回的对象,如上面的变量myChart

echarts.connect()

将多个图表进行拼接

echarts.connect([myChart1,myChart2]);

其他echarts实例对象方法

on/off绑定和解绑事件处理函数

myChart.on('click',function(arg){
	console.log(111);
	console.log(arg);
})

dispatchAction 触发某些行为

myCharts.dispatchAction({
	type:'highlight',//事件类型
	seriesIndex:0,//图表索引
	dataIndex:1//高亮位置
})

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

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

相关文章

系统编程中的进程的概念No.2

引言&#xff1a; 今天是个好日子&#xff0c;日更动态养成习惯&#xff0c;日更博客你我他&#xff0c;北京时间 2023/1/29/10:09&#xff0c;今天阳光明媚&#xff0c;但是还是很冷&#xff0c;起床时间8:55&#xff0c;可以看出又早了那么一点点&#xff0c;今天为什么能起…

VSCode调试Python文件并指定虚拟环境

记录在使用VSCode调试py文件时遇到的一些问题&#xff1a;1.启用Debug模式进行调试2.调试带参数的python文件3. 调试时指定服务器虚拟环境4. 相对路径出错首先给出VScode 官方调试说明&#xff1a;https://code.visualstudio.com/docs/python/debugging#_set-configuration-opt…

法律常识(六)《最高人民法院婚姻法司法解释精释精解》例子

目录 一、婚约财产&#xff08;彩礼&#xff09;纠纷 二、夫妻共同债务中违法债务的审查认定 三、夫妻之间也可以成立借贷关系 四、一方未经另一方同意出售夫妻共同共有的房屋 五、夫妻一方婚前财产投资所得的归属 六、夫妻间房产赠与协议的效力认定 七、婚内财产分割的…

拉新、留存、转化、提频、裂变

任何一家创业公司从启动到成功&#xff0c;都会把一件事情当作核心&#xff0c;那就是增长。什么是增长&#xff1f;有人说是收入&#xff0c;有人说是利润&#xff0c;还有人说是市场份额&#xff0c;实际上都对&#xff0c;但这些都建立在一个基础要素之上&#xff0c;那就是…

JavaEE day9 初识HTTP2

web开发 web应用 1&#xff1a;n web场景 1&#xff1a;n web资源&#xff08;动态资源或静态资源&#xff09; web资源之间形成一张关联网络 web开发&#xff1a;提供web资源连接web资源 响应状态 web服务器为某次请求给出的结果情况 只有请求HOST&#xff08;主机&am…

七、图像分类模型的部署(Datawhale组队学习)

文章目录前言ONNX简介应用场景部署ImageNet预训练图像分类模型导出ONNX模型推理引擎ONNX Runtime部署-预测单张图像前期准备ONNX Runtime预测推理引擎ONNX Runtime部署-ImageNet预训练图像分类模型预测摄像头实时画面前期准备预测摄像头的一帧画面预测摄像头实时画面部署自己训…

JavaScript的基础知识

目录 一、初识JavaScript 二、JavaScript的基础 1、初步了解 2、代码位置 3、注释 4、变量 ①字符串 ②数组 ③对象 ④条件语句 ⑤函数 三、DOM模块 一、初识JavaScript JavaScript&#xff0c;是一门编程语言。浏览器就是JavaScript语言的解释器。DOM和BOM 相当于编…

Unity功能——宏定义的使用

声明&#xff1a;本文为个人笔记&#xff0c;用于学习研究使用非商用&#xff0c;内容为个人研究及综合整理所得&#xff0c;若有违规&#xff0c;请联系&#xff0c;违规必改。 Unity功能——宏定义的使用 文章目录Unity功能——宏定义的使用一.开发环境二.问题描述三.宏的使用…

拿下大厂Offer的关键——飞滴出行网约车项目全新完结

哈喽各位小伙伴&#xff0c;好久不见吖&#xff01;正月初八&#xff0c;你开工了吗&#xff1f;告别新春的氛围&#xff0c;又开始新一年的奋斗。尤其是年前的离职的小伙伴&#xff0c;马上又是金三银四&#xff0c;你的面试还要准备多久&#xff1f;今天给大家分享一份阿里大…

Leetcode力扣秋招刷题路-0098

从0开始的秋招刷题路&#xff0c;记录下所刷每道题的题解&#xff0c;帮助自己回顾总结 98. 验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。 节点…

[cpp进阶]C++类型转换

文章目录C语言的类型转换为什么C需要四种类型转换C强制类型转换static_castreinterpret_castconst_castdynamic_castexplicitRTTIC语言的类型转换 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&#xff0c;或者返回值类型与接收…

使用lnmp与wordpress做1个外贸询盘网站

目录 lnmp安装 包安装 mysql元数据库 网路策略确认 iptables确认 mysql允许远程访问 wordpress下载安装 包安装 nginx配置 wordpress配置 初始化 astra&#xff0c;elementor和woocommerce插件 插件安装 模板选择 自定义网页 国内不兴建站&#xff0c;通常只有码…

openstack: nova : reset-state

https://github.com/openstack/python-novaclient 牵扯的两个project是&#xff1a;nova和python-novaclient&#xff1b; 这个命令从代码分析和实际使用上来看只是将nova数据库里的实例的状态更改&#xff1b;没有对实例做实质的操作。 https://docs.openstack.org/nova/pik…

01 C语言实现动态气泡碰撞和移动的效果,小球碰撞,Win7气泡壁纸,碰撞算法

C语言实现动态气泡碰撞和移动的效果 作者将狼才鲸创建日期2023-01-29 Git源码仓库地址&#xff1a;C语言实现动态气泡碰撞和移动的效果CSDN文章地址&#xff1a;01 C语言实现动态气泡碰撞和移动的效果 一、前言 想要实现多气泡相互碰撞的效果&#xff1b; 想着这种在Win7壁纸…

【Cloudera Manager】cdh集群ntp时钟同步问题

CM启动后集群界面出现时钟未同步问题在集群主机通过ntpstat命令查看&#xff0c;出现unsynchronised标识通过timedatectl命令&#xff0c;显示NTP synchronized: no以上说明确实没有同步时钟问题排查与解决首先查看ntp配置文件&#xff0c;cat /etc/ntp.confserver 172.X.X.X配…

万年历农历法定节假日数据查询工具

1.数据来源于百度搜索置顶日历&#xff1a; 2.代码&#xff1a; http调用及数据处理均采用了hutool, 也可以用别的工具。 hutool 依赖如下&#xff1a; <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><versio…

DNS 域名解析服务器详解以及相关实验

目录 一&#xff0c; 域名解析服务器的介绍 1&#xff0c; 因特网的域名结构 2&#xff0c; 域名服务器的类型划分 二&#xff0c;DNS 域名解析的过程 三&#xff0c;DNS 解析方式 四&#xff0c;搭建 DNS 服务器 1&#xff0c;使用命令yum install bind -y安装dns软件 2&#…

对于初学python的小白大佬们有什么建议吗?

我认为态度是一块重要的敲门砖。米卢说&#xff1a;“态度决定一切”。你对人生的态度是这个世界真正的试金石。对不同的事情要有不同的态度。而对待自学&#xff0c;认真就妥了。 首先要为自己设定一个目标&#xff0c;对于初学者&#xff0c;看书的话可以看《Head First Pyt…

几款考研必备软件 你还不知道吗?

几款考研必备软件 你还不知道吗? 英语单词软件推荐 背单词软件 墨墨背单词[推荐指数]⭐️⭐️⭐️⭐️⭐️ 科学高效抗遗忘方法,记录详细记忆行为数据,结合记忆反馈帮你记忆更加牢固 界面简洁舒适无广告,没有任何干扰,就算是强迫症也能使用的非常舒适 完美收集权威单词本,全…

哈佛大学庄小威团队破解衰老大脑的关键变化

“了解衰老是生物医学最重要的目标之一&#xff0c;同时这也是一个非常具有挑战性的问题。”哈佛大学终身教授庄小威说&#xff0c;“造成挑战的原因之一在于大脑非常复杂&#xff0c;细胞种类繁多&#xff0c;许多不同类型的神经元和非神经元细胞形成了复杂的相互作用网络。”…