可视化大屏 - 项目1

news2025/1/13 15:51:34

文章目录

  • 技术栈
  • echarts 可视化
  • 需求分析
  • 代码实现

技术栈

  • flexible.js + rem 实现不同终端下的响应式布局,根据不同屏幕宽度,自适配布局;

    • html中引入index.js,可以改名为flexible.js;
    • 默认划分10份,可以自己修改,比如24份,rem = widthPixel / 24 + ‘px’
      在这里插入图片描述
  • vscode 安装cssrem插件,将像素px 转为 rem份额;
    file > preferences > settings 在这里插入图片描述
    也可以点击扩展图标>对应插件的齿轮图表> Extension Settings
    在这里插入图片描述
     
    设置完成,重启vscode,编辑css width 像素时,会自动计算划分的rem数,选择即可,如下:
    在这里插入图片描述
     
    编写一个div块,设置width:80px; height:80px; 检查响应效果;

  • Flex布局;

  • Less ;

  • eCharts 可视化

 

echarts 可视化

  • 百度开源的 js 可视化库,其他还有如D3.js 可视化库;

  • 使用PC端、移动端,兼容主流的浏览器;

  • echarts apache官网; (https://www.echartsjs.com/)

  • echarts快速入门

  • 使用步骤:

    • 下载echarts.js 文件,并在html页面中引用;
    • 准备图表的容器;
    • echarts.init(容器) 初始化实例对象;
    • 指定配置项、数据;
    • 将配置项设置为echarts的实例对象;
  • 基础配置项 ->配置项手册

var option = {
  title: { // 图表的标题
    text: 'Stacked Line'
  },
  tooltip: { // 提示框组件
    trigger: 'axis' //axis坐标轴出发  item 图表触发
  },
  legend: { // 图例
    data: ['Email', 'Union Ads', 'Video Ads', 'Direct', 'Search Engine'] // 图例名称
  },
  grid: { // 坐标网格
    left: '3%', //左边 距离容器距离
    right: '4%', 
    bottom: '3%',
    containLabel: true // 包含刻度
  },
  toolbox: { // 工具箱组件
    feature: {
      saveAsImage: {}
    }
  },
  xAxis: { // x轴
    type: 'category', // 类别
    boundaryGap: false, // 图表与坐标轴的间隙
    data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] // 类别名
  },
  yAxis: { // y轴
    type: 'value' // 显示值
  },
  color: ["red", "black", "pink", "blue", "yellow"], // 每个图形的颜色
  series: [ // 图形数组
    {
      name: 'Email', // 该图表的图例,有name时,legend可以省略
      type: 'line', // 该图表类型
      stack: 'Total', // 不同的图形 数据堆叠
      data: [120, 132, 101, 134, 90, 230, 210] // 该图表的数据
    },
    {
      name: 'Union Ads',
      type: 'line',
      stack: 'Total',
      data: [220, 182, 191, 234, 290, 330, 310]
    },
    {
      name: 'Video Ads',
      type: 'line',
      stack: 'Total',
      data: [150, 232, 201, 154, 190, 330, 410]
    },
    {
      name: 'Direct',
      type: 'line',
      stack: 'Total',
      data: [320, 332, 301, 334, 390, 330, 320]
    },
    {
      name: 'Search Engine',
      type: 'line',
      stack: 'Total',
      data: [820, 932, 901, 934, 1290, 1330, 1320]
    }
  ]
};

 

需求分析

 
在这里插入图片描述

代码实现

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/index.css">
    <title>数据可视化</title>
</head>
<body>
    <script src="js/flexible.js"></script>
    <script src="js/echarts.js"></script>
    <script src="js/index.js"></script>
    <script src="js/jquery.js"></script>
    <!-- css设置body 背景图 -->

    <!-- header 块 -->
    <div class="header">
        <h1>数据可视化</h1>
        <div class="showTime"></div>
    </div>
    <!-- 显示时间的js -->
    <script type="text/javascript">
        // 显示时间的函数
        function freshTime(){
            var date = new Date();
            
            // 块级作用域的变量
            let divShowTime = document.getElementsByClassName("showTime")[0];
            // 解析时间元素
            let curYear = date.getFullYear();
            let curMonth = date.getMonth() + 1; // month从0开始,所以+1
            curMonth = curMonth < 10 ? "0" + curMonth : curMonth;
            let curDate = date.getDate();
            curDate = curDate < 10 ? "0" + curDate : curDate;
            let curHours = date.getHours();
            curHours = curHours < 10 ? "0" + curHours : curHours;
            let curMinutes = date.getMinutes();
            curMinutes = curMinutes < 10 ? "0" + curMinutes : curMinutes;
            let curSeconds = date.getSeconds();
            curSeconds = curSeconds < 10 ? "0" + curSeconds : curSeconds;

            // java 和 javascript 都支持字符串与数值的拼接
            divShowTime.innerHTML = "当前时间:" + curYear + "-" 
            + curMonth + "-" + curDate + " " + curHours 
            + ":" + curMinutes + ":" + curSeconds;
        }
        // 立即执行函数
        (function(){
            // 设置定时器 , 每秒执行一次freshTime函数
            setInterval(freshTime, 1000);
        })()

    </script>


    <!-- 主体部分  -->
    <div class="main">
        <div class="column">
            <!-- 左列 -->
            <div class="commonPanel bar">
                <h2>柱形图</h2>
                <div class="chart"></div>
                <div class="footer"></div>
            </div>
            <div class="commonPanel line">
                <h2 id="leftLine">折线图
                    <a href="javascript:;" class="leftLineTab3">2023</a>
                    <a href="javascript:;" class="leftLineTab4">2024</a>
                </h2>
                <div class="chart"></div>
                <div class="footer"></div>
            </div>
            <div class="commonPanel pie">
                <h2>圆饼图</h2>
                <div class="chart"></div>
                <div class="footer"></div>
            </div>
        </div>

        <div class="column">
            <!-- 中间列 -->
            <div class="num">
                <div class="head">
                    <ul>
                        <li>1230</li>
                        <li>456</li>
                    </ul>
                </div>
                <div class="body">
                    <ul>
                        <li>需求人数</li>
                        <li>供应人数</li>
                    </ul>
                </div>
            </div>
            <div class="map">
                <div class="map1"></div>
                <div class="map2"></div>
                <div class="map3"></div>
                <div class="chart"></div>
            </div>
        </div>

        <div class="column">
            <!-- 右列 -->
            <div class="commonPanel bar">
                <h2>柱形图</h2>
                <div class="chart"></div>
                <div class="footer"></div>
            </div>
            <div class="commonPanel">
                <h2>折线图</h2>
                <div class="chart"></div>
                <div class="footer"></div>
            </div>
            <div class="commonPanel">
                <h2>圆饼图</h2>
                <div class="chart"></div>
                <div class="footer"></div>
            </div>
        </div>
    </div>

    <!-- 展示地图 -->
    <script src="js/china.js"></script>
    <script src="js/myMap.js"></script>
</body>
</html>

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

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

相关文章

蓝桥杯 --- 日期问题模板

目录 1.如何判断闰年 2.如何遍历当前年份的每一天 3.如果想要输出某一年某一天到某一年某一天之间一共有多少天。 4.精确到具体周几到周几的问题分析 5.如何直接通过一层for循环枚举年月日 习题&#xff1a; 蓝桥杯竞赛特别喜欢考日期问题&#xff0c;今天给大家分享一下…

Linux云计算之网络基础8——IPV6和常用网络服务

目录 一、IPV6基础 IPV6详解 IPv6数据报的基本首部 IPv6数据报的扩展首部 IPv6地址的表示方法 IPv6地址分类 网际控制报文协议ICMPv6 二、cisco基于IPV6的配置 cisco基于IPV6的配置步骤 模拟配置 三、HTML基础介绍 文档的结构 动手操作一下 四、常用网络服务介绍…

基于单片机的测时仪系统设计

**单片机设计介绍&#xff0c;基于单片机的测时仪系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的测时仪系统设计是一个结合了单片机技术与测时技术的综合性项目。该设计的目标是创建一款精度高、稳定性强且…

软考109-上午题-【计算机网络】-网络设备

一、网络设备 1-1、物理层的互联设备 物理层的设备&#xff1a;中继器、集线器 1、中继器 中继器&#xff0c;可以使得两个链路在物理层上互联。 可以使得信号再生&#xff0c;信号增强。因此&#xff0c;中继器使得接受用户&#xff0c;收到衰减很小的原始信号 2、集线器&a…

55555555555555

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

【二】Django小白三板斧

今日内容 静态文件配置 request对象方法初识 pycharm链接数据库&#xff08;MySQL&#xff09; django链接数据库&#xff08;MySQL&#xff09; Django ORM简介 利用ORM实现数据的增删查改 【一】Django小白三板斧 HttpResponse 返回字符串类型的数据 render 返回HTML文…

2012年认证杯SPSSPRO杯数学建模D题(第一阶段)人机游戏中的数学模型全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 减缓热岛效应 D题 人机游戏中的数学模型 原题再现&#xff1a; 计算机游戏在社会和生活中享有特殊地位。游戏设计者主要考虑易学性、趣味性和界面友好性。趣味性是本质吸引力&#xff0c;使玩游戏者百玩不厌。网络游戏一般考虑如何搭建安全可…

C语言中的结构体:揭秘数据的魔法盒

前言 在C语言的广阔天地中&#xff0c;结构体无疑是一颗璀璨的明珠。它就像是一个魔法盒&#xff0c;能够容纳各种不同类型的数据&#xff0c;并按我们的意愿进行组合和排列。那么&#xff0c;这个魔法盒究竟有何神奇之处呢&#xff1f;让我们一探究竟。 一、结构体的诞生&…

C++指针与二维数组

按行顺序存放所有元素 二维数组与行 a代表二维数组的首地址&#xff0c;也是第0行的首地址&#xff1b; ai代表第i行&#xff08;个&#xff09;元素的地址&#xff0c;即&a[i]; ai或&a[i]表示行地址&#xff0c;每次加1会移动一行&#xff1b; *&#xff08;ai&#…

STM32CubeMX配置步骤详解五 —— 基础配置(2)

接前一篇文章&#xff1a;STM32CubeMX配置步骤详解四 —— 基础配置&#xff08;1&#xff09; 本文内容主要参考&#xff1a; STM32CUBEMX配置教程&#xff08;一&#xff09;基础配置-CSDN博客 特此致谢&#xff01; 三、STM32CubeMX基础配置 上一回讲解了STM32CubeMX基础…

ELA:深度卷积神经网络的高效局部注意力机制

文章目录 摘要1、引言2、相关工作3、方法3.1、重新审视坐标注意力3.1.1、坐标注意力3.1.2、坐标注意力的不足 3.2、高效局部注意力3.3、多个ELA版本设置3.4、可视化3.5、实现 4、实验4.1、实验细节4.2、ImageNet上的图像分类4.3、目标检测4.4、语义分割 5、结论 摘要 https://…

【打印SQL执行日志】⭐️Mybatis-Plus通过配置在控制台打印执行日志

目录 前言 一、Mybatis-Plus 开启日志的方式 二、测试 三、日志分析 章末 前言 小伙伴们大家好&#xff0c;相信大家平时在处理问题时都有各自的方式&#xff0c;最常用以及最好用的感觉还是断点调试&#xff0c;但是涉及到操作数据库的执行时&#xff0c;默认的话在控制台…

Linux基础篇:Linux网络yum源——以配置阿里云yum源为例

Linux网络yum源——以阿里云为例 一、网络yum源介绍 Linux中的YUM&#xff08;Yellowdog Updater, Modified&#xff09;源是一个软件包管理器&#xff0c;它可以自动处理依赖关系并安装、更新、卸载软件包。YUM源是一个包含软件包的远程仓库&#xff0c;它可以让用户轻松地安…

实验一 Windows 2008虚拟机安装、安装VM Tools、快照和链接克隆、添加硬盘修改格式为GPT

一、安装vmware workstation软件 VMware workstation的安装介质&#xff0c;获取路径&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1AUAw_--yjZAUPbsR7StOJQ 提取码&#xff1a;umz1 所在目录&#xff1a;\vmware\VMware workstation 15.1.0 1.找到百度网盘中vmwa…

x86汇编写矩阵乘法问题(实现一个3×3矩阵乘法的汇编代码)

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

4核8G服务器性能怎么样?4核8G12M配置可应对哪些场景?

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

【TB作品】MSP430单片机读取大气压强传感器BMP180

文章目录 实物main所有代码 实物 main #include <msp430.h> #include "stdio.h" #include "OLED.h"#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h>// P2.2 oled scl // P2.3 oled sda// p…

java算法day43 | 动态规划part05 ● 1049. 最后一块石头的重量 II ● 494. 目标和 ● 474.一和零

1049. 最后一块石头的重量 II 核心思想&#xff1a; 尽量让石头分成重量相同的两堆&#xff0c;相撞之后剩下的石头最小&#xff0c;这样就化解成01背包问题了。 是不是感觉和昨天讲解的416. 分割等和子集 (opens new window)非常像了。那么分成两堆石头&#xff0c;一堆石头的…

LeetCode十一题:容纳最多水的容器【11/1000 python】

&#x1f464;作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 LeetCode解锁1000题: 打怪升级之旅htt…

基于SpringBoot的“数码论坛系统设计与实现”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“数码论坛系统设计与实现”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统总体结构图 系统首页界面图 数码板…