当前位置: 首页 > article >正文

数据可视化

chrome使用skia作为绘图引擎,向上开放了canvas,svg,webGl,html等绘图能力

canvas

是html的新特性使用canvas元素在网页上通过js绘制图像

SVG

SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
SVG 用于定义用于网络的基于矢量的图形
SVG 使用 XML 格式定义图形
SVG 图像在放大或改变尺寸的情况下其图形质量不会有损失
SVG 是万维网联盟的标准

webgl

3D绘图协议

zrender

zrender是二维绘图引擎它提供canvas,svg,vml等渲染方式,zrender也是echarts的渲染器

D3

three.js

基于 webgl 的js 3D图形库

canvas高级应用:图片压缩算法实现

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
</head>
<body>
  <input type="file" id="upload">
  <script>
    const ACCEPT = ['image/jpg', 'image/png', 'image/jpeg'];
    const MAXSIZE = 3 * 1024 * 1024
    function ImageToBase64(file, callback) {
      let reader = new FileReader()
      reader.addEventListener('load', function (e) {
        const base64Image = e.target.result
        callback && callback(base64Image)
        reader = null
      })
      reader.readAsDataURL(file)
    }
    function compress(base64Image) {
      let maxW = 1024
      let maxH = 1024
      console.log(base64Image)
      const image = new Image()
      image.addEventListener('load', function (e) {
        let ratio;//图片的压缩比
        let needCompress = false;//是否需要压缩
        console.log(image.naturalWidth, image.naturalHeight)
        if (maxW < image.naturalWidth) {
          needCompress = true
          ratio = image.naturalWidth / maxW
          maxH = image.naturalHeight / ratio
        }//经过处理后,实际图片的尺寸为1024*640
        if (maxH < image.naturalHeight) {
          needCompress = true
          ratio = image.naturalHeight / maxH
          maxW = image.naturalWidth / ratio
        }
        if (!needCompress) {
          maxW = image.naturalWidth
          maxH = image.naturalHeight
        }//如果不需要压缩,需要图片的实际尺寸
        const canvas = document.createElement('canvas')
        canvas.setAttribute('id', '__compress__')
        canvas.width = maxW
        canvas.height = maxH
        canvas.style.visibility = 'hidden'
        document.body.appendChild(canvas)
        const ctx = canvas.getContext('2d')
        ctx.clearRect(0, 0, maxW, maxH)
        ctx.drawImage(image, 0, 0, maxW, maxH)
        const compressImage = canvas.toDataURL('image/jpeg', 0.1)
        const _image = new Image()
        _image.src = compressImage
        document.body.append(_image)
        canvas.remove()
        console.log('压缩比' + image.src.length / _image.src.length)
      })
      image.src = base64Image
      document.body.appendChild(image)
    }
    const upload = document.getElementById('upload')
    upload.addEventListener('change', function (e) {
      const [file] = e.target.files
      console.log(file)
      if (!file) {
        return;
      }
      const { type: fileType, size: fileSize } = file
      if (!ACCEPT.includes(fileType)) {
        alert(`不支持${fileType}`)
        return
      }
      if (fileSize > MAXSIZE) {
        alert(`文件超出1MB`)
        upload.value = ""
        return
      }
      //图片压缩
      ImageToBase64(file, compress)
    })
  </script>
</body>

</html>

hightcharts

highcharts:js图表库
highstock:js股票图表控件
highmaps:html5地图组件

Antv

G2/G2plot

G6

L7

echarts自定义主题和svg渲染

在这里插入图片描述
使用canvas渲染或者svg渲染
在这里插入图片描述

echarts系列及多系列

一个坐标系绘制多个图

echarts4.0新特性:dataest

echarts组件

echarts定位

调节位置

grid :{
  top:100,
  left:"10%",
  right:10,
  bottom:100
}

echarts坐标系

单坐标
双坐标
多坐标

在这里插入图片描述

数据报表项目


http://www.kler.cn/a/1885.html

相关文章:

  • es 3期 第18节-分页查询使用避坑的一些事
  • 精准提升:从94.5%到99.4%——目标检测调优全纪录
  • 下载运行Vue开源项目vue-pure-admin
  • 服务器证书原理
  • 重温设计模式--享元模式
  • 前端开发 之 12个鼠标交互特效上【附完整源码】
  • 数据库:mysql的主从复制实战
  • 版本管理工具git 与 svn 的区别具体有哪些?
  • UE实现地面动态交互效果
  • 大数据框架保姆级安装教程——Kafka(3.0.0)
  • 小白学Pytorch系列--Torch API (7)
  • Java单例模式写法
  • 差分运放公式推导-运算放大器
  • 初阶C语言:冒泡排序
  • typescript(元组、枚举、类、泛型)
  • mysql数据库常问面试题
  • 我的 System Verilog 学习记录(10)
  • CF1770E Koxia and Tree
  • 探索css渐变-实现饼图-加载图-灯柱
  • 【Java】UDP网络编程
  • 蓝桥杯算法全集之完全背包问题(动态规划算法)
  • 蓝桥杯真题——自动售水机
  • LeetCode:704. 二分查找
  • 区块链基本原理
  • 【jvm】JVM(三)JVM 垃圾回收算法详解(CMS、三色标记)
  • 【进阶数据结构】二叉搜索树经典习题讲解