闭关修炼JS之数据可视化

简单的前言:生病赋闲在家,无事写点东西。

数据可视化常用解决方案

  1. 最常用的自然是Echarts
  2. 不过实际开发中,移动端可能更多的是用F2
  3. 熟练之后,还可以尝试玩一下d3.js

Echarts的基本使用

echarts使用五部曲:

  1. 下载并引入echarts.js文件------图表依赖这个js库
  2. 准备一个具备大小的DOM容器------生成的图表会放入这个容器内
  3. 初始化echarts实例对象------实例化echarts对象
  4. 指定配置项和数据------根据具体需求修改配置选项
  5. 将配置项设置给echarts实例对象------让echarts对象根据修改好的配置生效

定制配置项

学echarts的关键在于查阅文档,根据需求修改配置:echarts官网-----文档-----配置项手册
比较常见的配置有:

  • title:标题组件
  • tooltip:提示框组件
  • legend:图例组件
  • toolbox:工具栏
  • grid:直角坐标系内绘图网格
  • xAxis:直角坐标系grid中的x轴
  • yAxis:直角坐标系grid中的y轴
  • series:系列列表。每个系列通过type决定自己的图表类型
  • color:调色盘颜色列表

数据可视化项目适配方案

3合1方案:
flexible.js------检测浏览器宽度,修改html文字大小
rem单位-------页面元素根据rem适配大小,配合cssrem插件
flax布局-------页面快速布局

具体来说,如:

  • 设计稿是1920px
  • PC端适配:宽度在1024-1920之间页面元素宽高自适应

具体做法:

  1. 下载并引入flexible.js,打开flexible.js,修改第18行,改为除以24(flexible默认将屏幕10等分,也就是一份192px,但是这个数字太大了而且不好计算,可改为24等分,一份80px)
  2. 安装插件px to rem & rpx (cssrem) ,第一次安装好,重启vscode,在插件的配置当中设置基准值,即cssrem:root font size,当在flexible修改为24之后,就设置为80
  3. 设置限制,最小支持为1024px,最大支持1920px,也就是说小于1024px的和大于1920px的不做自适应(即固定尺寸),具体代码如下:
@media screen and (max-width:1024px){
   
   
	html {
   
   
		font-size: 42.66px!important;
	}
}
@media screen and (min-width:1920px){
   
   
	html {
   
   
		font-size: 80px!important;
	}
}

项目实例

index.html

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

  <body>
    <!-- 父容器大盒子 -->
    <div class="viewport">
      <div class="column">
        <!-- 概览区域模块制作 -->
        <div class="panel overview">
          <div class="inner">
            <ul>
              <li>
                <h4>2,190</h4>
                <span>
                  <i class="icon-dot" style="color: #006cff"></i>
                  设备总数
                </span>
              </li>
              <li class="item">
                <h4>190</h4>
                <span>
                  <i class="icon-dot" style="color: #6acca3"></i>
                  季度新增
                </span>
              </li>
              <li>
                <h4>3,001</h4>
                <span>
                  <i class="icon-dot" style="color: #6acca3"></i>
                  运营设备
                </span>
              </li>
              <li>
                <h4>108</h4>
                <span>
                  <i class="icon-dot" style="color: #ed3f35"></i>
                  异常设备
                </span>
              </li>
            </ul>
          </div>
        </div>
        <!-- 监控区域模块制作 -->
        <div class="panel monitor">
          <div class="inner">
            <div class="tabs">
              <a href="javascript:;" class="active">故障设备监控</a>
              <a href="javascript:;">异常设备监控</a>
            </div>
            <div class="content" style="display: block;">
              <div class="head">
                <span class="col">故障时间</span>
                <span class="col">设备地址</span>
                <span class="col">异常代码</span>
              </div>
              <div class="marquee-view">
                <div class="marquee">
                  <div class="row">
                    <span class="col">20180701</span>
                    <span class="col">11北京市昌平西路金燕龙写字楼</span>
                    <span class="col">1000001</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190601</span>
                    <span class="col">北京市昌平区城西路金燕龙写字楼</span>
                    <span class="col">1000002</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190704</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000003</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20180701</span>
                    <span class="col">北京市昌平区建路金燕龙写字楼</span>
                    <span class="col">1000004</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190701</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000005</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190701</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000006</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190701</span>
                    <span class="col">北京市昌平区建西路金燕龙写字楼</span>
                    <span class="col">1000007</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190701</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000008</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190701</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000009</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190710</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000010</span>
                    <span class="icon-dot"></span>
                  </div>
                </div>
              </div>
            </div>
            <div class="content">
              <div class="head">
                <span class="col">异常时间</span>
                <span class="col">设备地址</span>
                <span class="col">异常代码</span>
              </div>
              <div class="marquee-view">
                <div class="marquee">
                  <div class="row">
                    <span class="col">20190701</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000001</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190701</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000002</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190703</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000002</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190704</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000002</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190705</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000002</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190706</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000002</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190707</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000002</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190708</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000002</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190709</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000002</span>
                    <span class="icon-dot"></span>
                  </div>
                  <div class="row">
                    <span class="col">20190710</span>
                    <span class="col">北京市昌平区建材城西路金燕龙写字楼</span>
                    <span class="col">1000002</span>
                    <span class="icon-dot"></span>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
        <!-- 点位分布统计模块制作 -->
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值