echarts、dataV 数据可视化大屏

【DataV可视化工具详解】 探索数据之美——DataV可视化工具详解 阅读详情

一、项目描述 (包含echarts中国地图、dataV科技炫酷边框等等)

  • 一个基于 Vue、Datav、Echart 框架的 " 数据大屏项目 ",通过 Vue 组件实现数据动态刷新渲染,内部图表可实现自由替换。部分图表使用 DataV 自带组件, 组件库基于Vue (React版) ,主要用于构建大屏(全屏)数据展示页面即数据可视化,具有多种类型组件可供使用。

  • 项目环境:Vue-cli、DataV、Echarts、node

友情链接:

  1. Vue 官 方文档
  2. Vue CLI
  3. DataV 官方文档
  4. echarts 实例,echarts API 文档

项目展示

二、主要文件介绍

文件作用/功能
main.js主目录文件,引入 Echart/DataV 等文件
utils工具函数与 mixins 函数等
components/ HomeWord.vue项目主结构
assets静态资源目录,放置 logo 与背景图片

三、项目注意点

引用的模块(先下载 install)

main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import * as echarts from 'echarts'  //echarts 引用使用断言,否则可能报错
import ElementUI from 'element-ui'; 
import 'element-ui/lib/theme-chalk/index.css';  
import dataV from '@jiaminghi/data-view'
Vue.use(ElementUI); //部分图标使用 element-ui
Vue.use(dataV)   //全局启用 dataV

Vue.prototype.$echarts=echarts  //将echarts挂载到Vue原型上,全局可使用this.$echarts 调用
Vue.config.productionTip = false
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

封装组件渲染图表

所有的 ECharts 图表已经对数据和屏幕改动进行了监听,能够动态渲染图表数据。在监听窗口小大的模块。

中间部分中国地图json数据来源 (地址)

我这边直接复制内容存到本地 (把复制的链接在网页打开Ctrl+A Ctrl+C 全选复制粘贴): assets > json > china.json
在这里插入图片描述

渲染地图的子组件

有几个注意点:

  1. 需要地图json文件
  2. 需要监听数据变化
  3. tooltip: formatter 鼠标移入的提示信息框
<template>
  <div
    id="map"
    :style="{
      width: '700px',
      height: '730px',
      marginTop: '10px',
    }"
  ></div>
</template>

<script>
import china from "../assets/json/china.json"; //引入地图json文件
export default {
  mounted() {
    this.initChart();
  },

  props: {
    mapData: {  //接收父组件传过来的值
      type: Object,
      default: () => ({}),
    },
  },
  data() {
    return {
      options: {},
      chart: null,
    };
  
  methods: {
    // 地图
    initChart() {
      this.$echarts.registerMap("china", china); //echarts的map需要注册,根据引入的json文件名,并定义map的名称
      this.chart = this.$echarts.init(document.getElementById("map"), null, {
        renderer: "svg",
      }); //init()挂载在某个元素,所以还需要在mounted调用, { renderer: "svg" } 将原来的canvas绘图改为svg 清晰度更高
      this.drawMap();
    },
    drawMap() {
      this.chart.setOption(
        {
          title: {
            text: "平台运营实时数据",
            textStyle: {
              color: "#fff",
              fontSize: 28,
            },
          },

          tooltip: { //鼠标移入的提示信息框
            show: true,
            trigger: "item",
            formatter: function (a, b) {
              // 将人数改千分位
              let a2 = "";
              let olda = Number(a["data"].value);

              if (olda >= 0) {
                a2 = olda;
                if (olda > 999) {
                  let parts = olda.toString().split(".");
                  parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
                  a2 = parts.join(".");
                }
              }
              // 日活兼容
              let a3 = a["data"].ratio ? a["data"].ratio : 0;
              let a1 = a["name"];
              if (a1 == "台湾省" && !a2) { // 台湾省显示暂无数据
                return `${a1}<br/> 暂无数据`;
              }

              return `${a1}<br/>累计注册: ${a2}  <br/>日活: ${a3} %`;
            },
          },

          series: [
            {
              type: "map", 
              map: "china", //对应registerMap() 对应的名称
              top: "150",  //调整地图在页面的位置
              zoom: 1.3,  //缩放比例
              emphasis: {
                label: { show: false },
                itemStyle: {
                  areaColor: "rgba(136, 132, 216)",
                },
              },
              itemStyle: {
                borderColor: "#fff",
              },
              data: this.mapData.mapArr, //有数据才显示颜色
            },
          ],

          visualMap: {
            show: true,
            type: "continuous",
            calculable: true,
            orient: "horizontal",  
            textStyle: {
              color: "#fff",
            },
            min: 0,
            max: 10000000,
            text: ["累计注册/人", ""],
            color: ["#df3d20", "#fff"],
            inRange: {
              // color: [ "#fff","#44effb", "#3399ff","#2b8afe", "#006699"],
              color: ["#44effb", "#3399ff", "#2b8afe", "#006699"],  //地图颜色
            },
          },
        },
        true
      );
    },
  },

  watch: {
    // handler  监听数据发生变化需要具体执行的方法
    // deep  需要监听的数据的深度,一般用来监听对象中某个属性的变化
    mapData: {
      handler() {
        this.drawMap();
      },
      deep: true, 
    },
  },
};
</script>

<style></style>

复用图表组件(可以研究下)

更换边框 (炫酷的科技感动态边框)

边框是使用了 DataV 自带的组件,只需要去 views 目录下去寻找对应的位置去查找并替换就可以,具体的种类请去 DavaV 官网查看
如:

<dv-border-box-1> 内容撑开 </dv-border-box-1>
<dv-border-box-2> 内容撑开 </dv-border-box-2>
<dv-border-box-3> 内容撑开 </dv-border-box-3>

在这里插入图片描述

Mixins 解决自适应适配功能

使用 mixins 注入解决了界面大小变动图表自适应适配的功能,函数在 utils/drawMixin.js 中,应用在页面中,实现适配效果。

屏幕适配

使用更流程通用的 css3:scale 缩放方案,通过 ref 指向 主页面的元素,基准尺寸是 1980px*1080px,所以支持同比例屏幕 100% 填充,如果非同比例则会自动计算比例居中填充,不足的部分则留白。实现代码在 `src/utils/drawMixin.js ,如果有其它的适配方案,欢迎交流。

src > utils > drawMixin.js

// 屏幕适配 mixin 函数
//需要先设置index.html meta 标签 user-scalable=no
//<meta name="viewport" content="width=device-width,initial-scale=1.0 ,user-scalable=no">
//并且需要绑定ref 

// * 默认缩放值
const scale = {
    width: '1',
    height: '1',
  }
  
  // * 设计稿尺寸(px)
  // 1920×1080
  const baseWidth =1920
  const baseHeight = 1080
  
  
  // * 需保持的比例(默认1.77778)
  const baseProportion = parseFloat((baseWidth / baseHeight).toFixed(5))
  
  export default {
    data() {
      return {
        // * 定时函数
        drawTiming: null
      }
    },
    mounted () {
      this.calcRate()
      window.addEventListener('resize', this.resize)
    },
    beforeDestroy () {
      window.removeEventListener('resize', this.resize)
    },
    methods: {
      calcRate () {
        const appRef = this.$refs["appRef"]
        if (!appRef) return 
        // 当前宽高比
        const currentRate = parseFloat((window.innerWidth / window.innerHeight).toFixed(5))
        if (appRef) {
          if (currentRate > baseProportion) {
            // 表示更宽
            scale.width = ((window.innerHeight * baseProportion) / baseWidth).toFixed(5)
            scale.height = (window.innerHeight / baseHeight).toFixed(5)
            appRef.style.transform = `scale(${scale.width}, ${scale.height}) translate(-50%, -50%)`
          } else {
            // 表示更高
            scale.height = ((window.innerWidth / baseProportion) / baseHeight).toFixed(5)
            scale.width = (window.innerWidth / baseWidth).toFixed(5)
            appRef.style.transform = `scale(${scale.width}, ${scale.height}) translate(-50%, -50%)`
          }
        }
      },
      resize () {
        clearTimeout(this.drawTiming)
        this.drawTiming = setTimeout(() => {
          this.calcRate()
        }, 200)
      }
    },
  }

homeword.vue

<template>
  <div id="index" ref="appRef">
  ...页面内容...
  </div>
</template>

<script>
import drawMixin from "../utils/drawMixin";
export default {
  components: {
   //.....
  },
  mixins: [drawMixin], //混入 (保持页面缩放比例)
 } 
 </script>

请求数据

使用 axios 进行数据请求,在 main.js 位置进行全局配置。

src > request 文件统一处理所有的请求

src > request > request.js 请求和响应拦截

// 封装axios实例的拦截器(请求, 响应)
import axios from 'axios';


// 1. 创建axios实例
const instance = axios.create({
    timeout: 15000, // 超时时间15s
    baseURL: '这里是你请求是ip地址', // ip+端口, 公用的前缀路径
});

// 重写实例请求前拦截器
instance.interceptors.request.use((config) => {

    return config;
}, (err) => {
    return Promise.reject(err);
})

// 重写实例响应后拦截器
instance.interceptors.response.use((result) => {
   
    return result.data;
}, (err) => {
    return Promise.reject(err);
})

// 导出axios实例
export default instance;

src > request > request.js 请求拼接地址

import request from './request';

// 主要指标 /mcpbd-data/data/mainIndex
export const getMainIndex= () => request.get('/mainIndex')  //这里是get请求,"/mainIndex" 是接口文档的请求拼接字段

//......

在homeword.vue 引入,并发送请求数据

由于一个页面要发送多个请求,并且成功获取数据再渲染,我使用了promise.all

并发请求,但是发现请求很慢(不知道有什么方法可以优化)

<template>
    ...
</template>

<script>
import drawMixin from "../utils/drawMixin";

//接口
import { 
  getMainIndex,
} from "../request/httpApi";

export default {
  components: {
    //...
  },
  mixins: [drawMixin],
  name: "HelloWorld",
  props: {},
  data() {
    return {
      //渲染子组件,还未请求到数据的时候,需要放数据的所有元素不显示
      falg: false,
      loading: true,
      loadTimer: null,
      resd: [],
      realVal: 0,
      MainIndicators: {
        // 主要指标 默认数据
        userAllCnt: "",
        userNewCnt: "",
        userDailyActvCnt: "",
        userDailyActvRatio: "",
        userMonthlyActvCnt: "",
        userMonthlyActvRatio: "",
        mctAllCnt: "",
      },

      //累计注册用户数折线
     
      //....

      mapData: {
        //地图数据
        mapArr: [],
      },
    };
  },
  mounted() {
    this.cancelLoading();
  },
  filters: {
    //过滤数据
    numFilter(val) {
      return (parseFloat(val) * 100).toFixed(1);
    },
  },
  created() {
    this.getJ();
    this.getShishi();
    // 实时更新数据(隔一个小时请求数据)
    setInterval(() => {
      this.getJ();
    }, 3600000);
    //左下角数据实时更新(1分钟)
    setInterval(() => {
      this.getShishi();
    }, 60000);
  },
  methods: {
    getShishi() {
      //左下角数据 (因为这部分数据需要每分钟更新一次所以单独拎出来)
      getRealTimeIndex()  //发送请求
        .then((res) => {
          this.RealTimeIndex.newUserAllUserCnt = [];
          this.RealTimeIndex.newUserAllUserDate = [];
          this.resd = res;
          this.resd.forEach((item) => {
            this.RealTimeIndex.newUserAllUserCnt.push(
              Number(item.userAllCnt).toFixed()
            ),
              this.RealTimeIndex.newUserAllUserDate.push(
                item.calTime.substring(11)
              );
          });
        })
        .catch((err) => {
          return;
        });
    },
    sortData(attr) {
      return function (a, b) {
        return b[attr] - a[attr];
      };
    },
    getJ() {
      // 累计注册用户
      let p1 = new Promise((resolve, reject) => {
        getUserAllCnt()
          .then((res) => {
            resolve(res);
          })
          .catch((err) => {
            reject(err);
          });
      });

      // 用户
      let p2 = new Promise((resolve, reject) => {
       //....
      });
      // 累计用户数
      let p3 = new Promise((resolve, reject) => {
        //....
      });
      // 日活用户数
      let p4 = new Promise((resolve, reject) => {
         //....
      });

      // 新增用户数
      let p5 = new Promise((resolve, reject) => {
        //....
      });
      // 指标排行表
      let p6 = new Promise((resolve, reject) => {
        //....
      });

      // 主要指标
      let p7 = new Promise((resolve, reject) => {
        getMainIndex()
          .then((res) => {
            setTimeout(() => {
              resolve(res);
            }, 700);
          })
          .catch((err) => {
            reject(err);
          });
      });
      // 地图数据省份
      let p8 = new Promise((resolve, reject) => {
        //....
      });

      Promise.all([p1, p2, p3, p4, p5, p6, p7, p8])
        .then((res) => {
          // 累计注册用户
       	  //数据处理。。。

          // 日活
         //数据处理。。。

          // 累计用户数 (只展示前5条数据)
         //数据处理。。。

          // 日活用户数
       //数据处理。。。

          // 新增用户数
          //数据处理。。。

          // 指标排行表
          //数据处理。。。

          // 主要指标
          let mainIndex = res[6];
          this.MainIndicators.userAllCnt = Number(
            mainIndex.userAllCnt
          ).toLocaleString("en-US"); //使用千分符
          this.MainIndicators.userNewCnt = Number(
            mainIndex.userNewCnt
          ).toLocaleString("en-US");
          this.MainIndicators.userDailyActvCnt = Number(
            mainIndex.userDailyActvCnt
          ).toLocaleString("en-US");
          this.MainIndicators.userDailyActvRatio = mainIndex.userDailyActvRatio;
          this.MainIndicators.userMonthlyActvCnt = Number(
            mainIndex.userMonthlyActvCnt
          ).toLocaleString("en-US");
          this.MainIndicators.userMonthlyActvRatio =
            mainIndex.userMonthlyActvRatio;
          this.MainIndicators.mctAllCnt = Number(
            mainIndex.mctAllCnt
          ).toLocaleString("en-US");

          //  地图省份指标
          let FenUserMap = res[7];
          this.mapData.mapArr = FenUserMap.map((item) => ({
            name: item.regionName,
            value: Number(item.userAllCnt).toFixed(),
            ratio: (Number(item.userActvDailyRatio) * 100).toFixed(1),
          }));
          //由于暂无数据隐藏南海诸岛,不太好,后面想到既然可以隐藏也可以将提示信息改成暂无数据
          this.mapData.mapArr.push({  
            name: "南海诸岛",
            value: 0,
            itemStyle: { opacity: 0, label: { show: false } },
          });

          this.falg = true; //子组件渲染
        })
        .catch((err) => {});
    },

    cancelLoading() {
      if (!this.loadTimer) {
        this.loadTimer = setTimeout(() => {
          this.loading = false;
        }, 500);
      } else {
        clearTimeout(this.loadTimer);
      }
    },
   
  },
  destroyed() {},
};
</script>

ECharts与DataV:数据可视化的得力助手 阅读详情

相关推荐

大屏数据可视化——DataV平台下的零售数据驾驶舱大屏数据可视化

DataV组件库基于Vue (React版 (opens new window)),主要用于构建大屏数据展示页面即数据可视化。边框颜色属性属性说明类型可选值默认值color自定义颜色string[]背景色string1.color属性支持配置两个颜色,一主一副。2.颜色类型可以为颜色关键字、十六进制色、RGB及RGBA。本项目综合性的练习了关于使用DataV组件实现可视化的流程,从项目的初始化搭建到最后的成品。具体操作中使用了DataV中的圆环图组件、轮播图、轮播表、水位图。

啊丢_的博客 4506

DataV 你值得拥有的大屏展示工具

DataV Vue 大屏数据展示组件库(项目地址: http://datav.jiaminghi.com/),具有以下几个特性: 开源免费 长期维护,不断添加新组件以丰富组件库 开箱即用 大部分组件设置宽高或配置简单的数据即可使用 视觉绚丽 通过组合不同的配置项可以达到多变的视觉效果 效果图 先来几张作者的效果图,看下DataV的魅力,之前我也试用过阿里云的Datav,觉得还不错,就是...

叶青 3万+

VUE3.2 + vue-echarts + DataV 数据可视化大屏(项目)

VUE3.2+VUE-echarts+DataV 数据可视化界面(项目)

CLONG_521的博客 1万+

dataV教程-浅用dataV

由于当前的大数据时代,人们对所产生的数据都有十分大的展示需求,都需要更美观,更加直接的方式去查看数据。

DWX_top的博客 1万+

Vue+DataV+Echarts实战:从零搭建企业级数据可视化大屏(附完整代码)

本文详细介绍了如何使用Vue、DataV和Echarts从零搭建企业级数据可视化大屏,包括环境准备、基础布局搭建、Echarts图表集成、大屏实战开发、性能优化技巧以及项目部署与适配。通过完整的代码示例和实战经验分享,帮助开发者快速掌握数据可视化大屏的开发流程和关键技术。

weixin_29011395的博客 391

Vue2+DataV+ECharts实战:打造自适应大屏数据可视化系统

本文详细介绍了如何使用Vue2、DataV和ECharts构建自适应大屏数据可视化系统。从项目初始化、自适应布局方案到DataV组件和ECharts高级技巧,提供了完整的实战指南和性能优化建议,帮助开发者快速掌握大屏可视化开发的核心技术。

ik67890123的博客 402

基于Vue3+ECharts5+datav的疫情数据可视化大屏/地图项目

基于Vue3+ECharts5+datav的疫情数据可视化大屏/地图项目,每日新增,国外新增排行

qq_44096635的博客 4673

数据可视化避坑指南:用ECharts+dataV解决大屏适配中的5个常见问题

本文详细解析了数据可视化大屏开发中的5个常见问题,包括百分比布局适配、大数据量渲染性能优化、多端兼容性解决方案、动态数据更新策略及设计规范一致性。通过ECharts和dataV的实战技巧,提供可复用的代码方案,帮助开发者高效解决大屏适配难题,提升可视化效果和性能。

weixin_28192383的博客 184

大数据可视化大屏实例

最近得到公司的一个任务,就是开发可视化大屏,这个我也没有弄过啊,所以当时是有一点手足无措的感觉,然后在进行借助搜索之后,发现数据大屏其实也就是那样,一般最经典的数据大屏就是 图加背景然后加数据就搞定了,接下来我就介绍下所了解的技术,进行开发数据大屏。 Echarts Apache ECharts (incubating) 是由百度捐给 Apache 开源基金会的开源项目,目前正在孵化中。ECharts是一款基于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。

qrn196789910的博客 1万+

【大屏可视化模板】vue-dataV-echarts-elementul大屏数据可视化方案,屏幕适配方案等比例缩放

效果图 从上到下,依次是F11效果,和正常网页效果,以及小屏效果。都是同比例缩放的,布局不会混乱 聊一下 为了让大家直观的看到所有的代码,所以结构方法等就不分各个组件引入了,会很麻烦要找哪是哪,我直接把所有的图都写在了一个vue组件内。并配上注释,相信大家可以很容易找到哪里对应哪里区域 核心点 这里的核心点就是等比例缩放的屏幕适配方法。可以让你不需要大量使用百分比或者转换之类的方法去写屏幕自适应大小,而是可以用部分px直接写css定死,通过屏幕大小改变对应等比例缩放,达到屏幕适配效果 前置条件 下载d

seeeeeeeeeee的博客 2万+

YYDatav的数据可视化大屏《精彩案例汇总》(Python&amp;Echarts源码)_vue2 datav界面demo

(img-LtuuGETL-1715688025348)](img-oihRtqET-1715688025349)],初衷也很简单,就是希望能够帮助到想自学提升的朋友。

2401_85015302的博客 1038

在vue项目里面使用dataV 和echarts实现数据可视化大屏展示

在上面我们已经在vue里面添加了路由了, 我们还需要以内dataV组件 npm install @jiaminghi/data-view // 将自动注册所有组件为全局组件 import dataV from '@jiaminghi/data-view' Vue.use(dataV) 这样dataV就配置好了接下来引入echarts npm install echarts@4.9.0 (切记下载4.9的版本,5.0的可能会与vue2.0不兼容) 下载完成后在main.js里面引入 //.

syh12345_的博客 1548

样本不均衡时AUC反而下降?用imbalanced-learn库实战解决分类陷阱

本文探讨了样本不均衡时AUC指标下降的现象,并通过imbalanced-learn库实战演示了如何解决这一分类陷阱。文章详细分析了不同采样技术(如SMOTE、ADASYN)对模型性能的影响,并提供了XGBoost和逻辑回归模型的优化建议,帮助数据科学家在实际项目中做出更明智的决策。

weixin_29174013的博客 343

前端炫酷大屏VUE+DataV+Echarts【已完结】

轻松建立前端炫酷大屏【VUE+DataV+Echarts】搭建到一站式大屏

stc_ljc的博客 12万+

TCN+iTransformer时间序列预测实战:从风电功率预测到源码解析(附完整代码)

本文深入探讨了TCN与iTransformer融合模型在时间序列预测,特别是风电功率预测中的应用。通过解析iTransformer‘倒置’视角的创新架构与TCN强大的局部时序捕捉能力,文章提供了完整的融合方案设计、源码实现及实战调优经验,旨在构建更强大的下一代预测引擎。

weixin_29062671的博客 265

Ubuntu服务器通过IPV6端口转发搭建幻兽帕鲁私服实战

本文详细介绍了在Ubuntu服务器上通过IPV6端口转发搭建幻兽帕鲁私服的完整教程。针对只有公网IPV6地址的服务器环境,提供了从硬件检查、端口转发工具配置到游戏服务器安装的全流程解决方案,帮助玩家轻松实现多人联机游戏体验。

weixin_30652491的博客 490

Go+Vue3开发web应用项目和数据可视化大屏素材推荐

后端Go语言和前端vue3开发数据可视化大屏,前端基于Vue3、TypeScript、DataV、ECharts 框架的数据大屏,采用新版动态屏幕适配方案,支持数据动态刷新渲染、内部DataV、ECharts图表都支持自由替换。使用时一键安装到前端接业务数据即可。

GoFly开发者的博客 1241

微服务架构的实施与挑战:前提判断、三种落地模式、收益兑现与风险应对

微服务是用运维复杂度换取演进自由度的一笔交易,是否划算取决于系统复杂度是否越过生产率曲线的交叉点。本文先给出实施前提:微服务溢价的六项成本、四项前置能力、康威定律与领域边界,并附就绪度自检表;再拆解三种落地模式:以绞杀者为代表的渐进剥离与数据五级迁移、以模块化单体起步的绿地建设、新旧并行的混合式集成;随后逐项审视六大技术优势与组织收益的兑现条件,系统梳理分布式谬误、分布式单体、Saga与幂等、弹性容错、可观测性、契约测试等挑战与对策,最后给出四阶段落地路线、DORA四项度量与常见反模式清单。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 172万+

大屏数据可视化(dataV看看官网自己练练,在与echarts一结合完美!)

只是入门,如果你连们都没入,那始终都在原地

妄梦久挽的博客 614

TBOX电源方案的详细讲解与分析

输入保护电路是确保车载电子系统稳定性的关键。通过合理选择TVS二极管、保险丝和浪涌抑制器等元器件,能够有效防止来自电源系统的瞬态过电压、浪涌和过流问题,保护后续电路免受损害。针对不同的电源环境和应用场景,可以通过提升功率、优化热管理以及选择高效元器件来进一步提高系统的保护能力和可靠性。

weixin_43199439的博客 1075

解锁RK1126与SC132GS摄像头适配密码:技术与代码全解析

本文详细介绍了瑞芯微RK1126芯片与SC132GS摄像头的适配方法。首先分析了RK1126的四核Cortex-A7处理器、Mali-T860 GPU等硬件特性,以及SC132GS的130万像素、全局快门等技术参数。重点阐述了基于MIPI CSI接口的硬件连接原理和基于V4L2框架的软件驱动设计,并提供了完整的初始化、数据采集和图像处理代码实现。针对常见连接和图像质量问题给出了解决方案,展现了该组合在智能安防、工业检测等领域的应用潜力,为开发者提供了实用的技术参考。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1503

12.18 Datav的使用

vue2使用DataV:http://datav.jiaminghi.com/guide/vue3使用DataV:https://datav-vue3.jiaminghi.com/guide/注意:目前为止,文档中的使用方式是vue2的使用方式,所以必须使用vue2的方式搭建环境查看是否安装vuevue -V创建vue项目进入项目启动项目访问项目!!组件库基于Vue (React版) ,主要用于构建大屏()数据展示页面即带有不同边框的容器用来点缀页面效果,增加视觉效果图表组件基于。

2503_92841156的博客 658

2021.02.23丨Virsorter2安装使用及答疑

最近项目比较多,又在学英语,写文章的时间少了很多。最近接到一个病毒组装的项目。用之前组装工具(ABYSS、SPAdes)都没有能够组装较为完整的scafford,今天介绍一款专门用于组装病毒的工具——Virsorter。 Virsorter最早版本发布于2015年,目前已经有了第二个版本。主要用于病毒的组装的注释。详细情况可以查看文章:https://peerj.com/articles/985/ 安装流程 安装文档: https://github.com/jiarong/VirSorter2/b

4836

DataV 项目教程

**DataV** 是一个基于 Vue.js 的数据可视化构建工具,提供丰富的图表组件和模板,适用于创建各种监控大屏、控制中心以及地理分析场景。它支持动态请求数据库(如阿里巴巴云的 AnalyticDB 和 ApsaraDB for RDS)及 API,可读取静态的 CSV 和 JSON 数据。用户通过其图形化的界面和配置小部件,无需大量编程即可制作专业的可视化效果。 ## 2. 项目快速启动 ...

gitblog_00976的博客 1066

零差云控 ZeroErr eRob 电机 CAN、CANopen、EtherCAT、ROS2 机器人开发详细教程

TwinCAT 3(Windows 控制与自动化技术)是 Beckhoff 提供的开发平台,可将任何兼容 PC 转变为实时控制系统,用于管理各种类型的工业自动化系统,如 PLC(可编程逻辑控制器)、运动控制、机器人等。

机器人控制与仿真应用 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: js部分笔记
下一篇: echarts 组件传值需要深度监听 watch----折线图
前端小程
博客等级 码龄5年 81粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值