【vue实战项目】通用管理系统:图表功能

news2024/11/27 1:46:07

目录

前言

1.概述

2.数据概览页

2.1.柱状图

2.2.折线图

2.3.地图


前言

本文是博主前端Vue实战系列中的一篇文章,本系列将会带大家一起从0开始一步步完整的做完一个小项目,让你找到Vue实战的技巧和感觉。

专栏地址:

https://blog.csdn.net/joker_zjn/category_12469788.html?spm=1001.2014.3001.5482

前文中我们依次安装好了插件、依赖,搭建好了环境,搭好了项目的架子,实现了登录页、首页、菜单栏、导航栏、学生列表模块这些功能。接下来我们要做的是图表功能,本文主要是简单做几个图表,让大家感受一下要做vue的图表开发该怎么做。

1.概述

ECharts(Echarts.js)是百度开发的一款强大的、开源的JavaScript图表库,用于在网页上生成各种高质量的、可交互的数据可视化图表。ECharts支持多种图表类型,包括但不限于折线图、柱状图、饼图、散点图、雷达图、热力图、地图、仪表盘、漏斗图、关系图等,几乎涵盖了数据可视化领域的所有需求。前端现在做图表基本上都是用的echart。

echart其实就是去配置不同类型图表,就是个填参数的游戏,可以先看一段代码感受一下:

// 引入ECharts后,通过DOM元素获取图表容器
var chartDom = document.getElementById('main');

// 初始化ECharts实例
var myChart = echarts.init(chartDom);

// 定义图表配置项
var option = {
    // 图表标题配置
    title: {
        text: 'ECharts 示例' // 图表标题文本
    },
    // 提示框组件,用于显示鼠标悬浮时的信息
    tooltip: {},
    // 图例组件,用于图例的展示和切换
    legend: {
        data:['销量'] // 图例项名称列表
    },
    // X轴配置,数据类别轴
    xAxis: {
        data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"] // 每个类别的名称
    },
    // Y轴配置,数值轴
    yAxis: {},
    // 系列列表,定义每一系列的数据和样式
    series: [{
        // 系列名称,会在图例中显示
        name: '销量',
        // 图表类型,这里是柱状图
        type: 'bar',
        // 数据数组,与xAxis.data一一对应
        data: [5, 20, 36, 10, 10, 20]
    }]
};

// 使用刚指定的配置项和数据显示图表
myChart.setOption(option);
  • echarts.init(chartDom):这行代码是创建ECharts实例的关键,chartDom是之前获取到的DOM元素,echarts.init方法会在这个元素上初始化一个图表实例。
  • option对象:这是ECharts的核心配置项,包含了图表的所有配置信息,如标题、图例、X轴、Y轴、系列数据等。每个部分都是一系列配置属性的集合,用于控制图表的外观和行为
  • title:定义图表标题,text属性指定了标题文本。
  • tooltip:虽然在这里是空对象,但默认开启了提示框功能,当鼠标悬停在图表元素上时会显示数据详情。
  • legend:定义图例,data属性是一个数组,包含了图例项的名称。
  • xAxis:X轴配置,data属性定义了X轴每个类别的标签。
  • yAxis:Y轴配置,这里没有特别设置,使用默认配置。
  • series:图表系列数据,数组中的每个对象代表一个系列。例子中只有一个系列,类型为bar(柱状图),name定义系列名称,data是该系列的具体数据。
  • myChart.setOption(option):最后,通过调用setOption方法将配置应用到图表实例上,完成图表的渲染。ECharts会根据option中的配置,计算布局、渲染图形,并处理交互逻辑。

所有图表和使用方式、配置方式官网上都有详细介绍,用到的时候直接去查就是:
Apache ECharts

接下来继续写我们的项目,使用echarts来实现图表,先安装依赖:

npm i -D echarts@4

在main.js里面将echart挂载进来:

import echarts from 'echarts' 
Vue.prototype.$echarts=echarts

2.数据概览页

2.1.柱状图

然后用原来的数据概览页来开发图表:

组件:

主要就是两个卡片容器,在其中一个尝试画一个柱状图。

<template>
    <div class="data-view">
        <el-card>
            <div id="main1"></div>
        </el-card>
        <el-card>
            <div id="main2"></div>
        </el-card>
    </div>
</template>
​
<script>
export default({
    data(){
        return{
​
        }
    },
    mounted(){
       let myChart=this.$echarts.init(document.getElementById('main1'));
       myChart.setOption({
        title:{
            text:'大佬进阶班'
        },
        tootip:{},
        xAxis:{
            data:['一班','二班','三班']
        },
        yAxis:{},
        series:[{
            name: '人数',
            type: 'bar',
            data: [45,42,46]
        }]
       })
    }
})
</script>
<style lang="less">
    .data-view{
        width: 100%;
        display: flex;
        justify-content: space-between;
        .el-card{
            width: 50%;
            #main1,#main2{
                height: 500px;
            }
        }
    }
</style>

效果图:

2.2.折线图

<template>
  <div class="data-view">
    <el-card>
      <div id="main1"></div>
    </el-card>
    <el-card>
      <div id="main2"></div>
    </el-card>
  </div>
</template>

<script>
export default({
    data(){
        return{

        }
    },
    mounted(){
    //    let myChart=this.$echarts.init(document.getElementById('main1'));
    //    myChart.setOption({
    //     title:{
    //         text:'大佬进阶班'
    //     },
    //     tootip:{},
    //     xAxis:{
    //         data:['一班','二班','三班']
    //     },
    //     yAxis:{},
    //     series:[{
    //         name: '人数',
    //         type: 'bar',
    //         data: [45,42,46]
    //     }]
    //    })
    this.draw(
            ['技术总监', '产品经理', '后端开发', '前端开发', '运维/测试'],
            ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
            [
            { name: '技术总监',  type: 'line',data: [80, 83, 84, 40, 44, 11, 12] },
            { name: '产品经理',  type: 'line',data: [80, 83, 84, 40, 44, 11, 12] },
            { name: '后端开发',  type: 'line',data: [80, 83, 84, 40, 44, 11, 12] },
            { name: '前端开发',  type: 'line',data: [80, 83, 84, 40, 44, 11, 12] },
            { name: '运维/测试',  type: 'line',data: [80, 83, 84, 40, 44, 11, 12] }
            ]
        );
    },
    methods:{
        draw(legend,xAxis,series){
            let myChart1=this.$echarts.init(document.getElementById('main2'))
            let option={
                title:{
                    text:'会话量'
                },
                tooltip: {
                    trigger:'axis'
                },
                legend: {
                    data:legend
                },
                xAxis: {
                    type:'category',
                    data:xAxis
                },
                yAxis:{
                    type: 'value'
                },
                series:series
        }
        myChart1.setOption(option)
        }
    }
})
</script>
<style lang="less">
.data-view {
  width: 100%;
  display: flex;
  justify-content: space-between;
  .el-card {
    width: 50%;
    #main1,
    #main2 {
      height: 500px;
    }
  }
}
</style>

2.3.地图

基于MapData.vue来开发地图。

地图需要json格式的数据,去这个网站自行下载:

免费下载实时更新的geoJson数据、行政区划边界数据、区划边界坐标集合__HashTang

放到assets路径下,然后看看能不能用:

<template>
    <div class="map-view">
        <div id="main"></div>
    </div>
</template>
<script>
import geoJson from '@/assets/map.Json'
export default {
    mounted(){
        console.log(geoJson)
    }
}
</script>
<style lang="less">
    .map-view{
        width:100%;
        #main{
            width: 100%;
            height: 600px;
        }
    }
</style>

绘制地图:

<template>
    <div class="map-view">
        <div id="main"></div>
    </div>
</template>
<script>
import geoJson from '@/assets/map.Json'
export default {
    mounted(){
        console.log(geoJson);
        let myChart=this.$echarts.init(document.getElementById('main'))
        this.$echarts.registerMap('china',geoJson)
        let option={
            geo:{
                map: 'china',
                aspectScale: 0.75,//scale地图长宽比
                zoom: 1.1,
                regions: [{
                    name: '南海诸岛'
                }]
            },
            series: [
                {//配置地图图标相关配置
                    type: 'map',
                    zoom: 1.1,
                    map: 'china'
                }
            ]
        }
        myChart.setOption(option)
    }
}
</script>
<style lang="less">
    .map-view {
        width:100%;
        #main {
            width: 100%;
            height: 600px;
        }
    }
</style>

效果:

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

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

相关文章

Vue3【十三】watch监视

Vue3【十三】watch监视 Vue3 中的watch祝你能监视以下四种数据 ref 定义的数据reactive定义的数据函数返回一个值一个包含上述内容的数组 案例截图 目录结构 案例代码 Person.vue <template><div class"person"><!-- <h1>Watch情况1&#xff…

遗址博物馆ar互动展示软件提供丰富的趣味化体验

在自然博物馆的每一个角落&#xff0c;都隐藏着大自然的奥秘与魅力。为了让每一位参观者都能深入体验、探索这些奥秘&#xff0c;我们引入了前沿的AR技术&#xff0c;为您带来一场前所未有的沉浸式自然之旅。 步入博物馆&#xff0c;您手中的AR相机将成为您的更佳向导。自然博物…

如何合并pdf文件?告别软件,教你用python轻松解决

首先安装相关库文件&#xff1a; pip install PyPDF2, tkinter 接着&#xff0c;定义合并pdf函数&#xff0c;使用了PdfMerger构建对象&#xff0c;输入pdf文件路径列表&#xff0c;以及输出文件夹路径 from PyPDF2 import PdfMergerdef merge_pdf(file_paths, output_dir…

【leetcode--30.串联所有单词的子串】

有没有一样喜欢看示例的&#xff0c;&#xff0c;看题目就觉得很难懂。大致就是words要进行排列组合&#xff0c;返回s中所有包含这个排列组合的首标。 顺完逻辑蛮好懂的&#xff0c;应该不算困难题&#xff0c;只是不知道用什么模块实现。 class Solution:def findSubstring…

python数据分析-连云港石化基地2023年用电量分析

接下来对连云港石化基地2023年用电量进行分析&#xff0c;首先导入数据分析基本的包&#xff1a; import pandas as pd import matplotlib.pyplot as plt# Load the data from the provided Excel files file_path1 data1.xlsx file_path2 data2.xlsxdata1 pd.read_excel(f…

网络学了点socket,写个聊天室,还得改进

目录 第一版: common 服务端: 客户端 第一版问题总结: 第二版 服务端: 客户端: 改进: Windows客户端 一些小问题 还可以进行的改进 这篇文章我就先不讲网络基础的东西了,我讲讲在我进行制作我这个拉跨聊天室中遇到的问题,并写了三版代码. 第一版: common #pragm…

使用 Keras 的 Stable Diffusion 实现高性能文生图

前言 在本文中&#xff0c;我们将使用基于 KerasCV 实现的 [Stable Diffusion] 模型进行图像生成&#xff0c;这是由 stable.ai 开发的文本生成图像的多模态模型。 Stable Diffusion 是一种功能强大的开源的文本到图像生成模型。虽然市场上存在多种开源实现可以让用户根据文本…

Linux磁盘分区使用情况查询

一、磁盘分区使用情况查询 1. 查询磁盘整体使用情况使用 df -h进行查询 如图我们可以了解到磁盘的一些大致的使用情况&#xff0c;注意当已用部分有超过80%使用的分区就意味着你需要进行磁盘的清理了。 2.查询指定的磁盘使用情况 使用指令 du -h 当不指定目录时&#xff0c;默…

Vivado时序报告之Datasheet详解

目录 一、前言 二、Datasheet配置选项说明 2.1 Options 2.2 Groups 2.3 Timer Settings 2.4 Common Options 三、Datasheet报告 3.1 General Information 3.2 Input Ports Setup/Hold 3.3 Output Ports Clock-to-out 3.4 Setup between Clocks 3.5 Combinational…

物联网实战--平台篇之(十四)物模型(用户端)

目录 一、底层数据解析 二、物模型后端 三、物模型前端 四、数据下行 本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/category_12631333.html 物联网…

基于Python的AI动物识别技术研究

基于Python的AI动物识别技术研究 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 系统的登录模块设计 本次设计的AI动物识别系统为了保证用户的数据安全&#xff0c;设计了登录的模块&…

明天15点!如何打好重保预防针:迎战HVV经验分享

在当今数字化时代&#xff0c;网络攻击日益猖獗&#xff0c;各行各业面临的网络安全威胁不断升级。从钓鱼邮件到复杂的APT攻击&#xff0c;网络犯罪分子的手法层出不穷&#xff0c;给各行各业的信息安全带来了前所未有的挑战。 在这样的背景下&#xff0c;"HVV行动"应…

免费,C++蓝桥杯等级考试真题--第7级(含答案解析和代码)

C蓝桥杯等级考试真题--第7级 答案&#xff1a;D 解析&#xff1a;步骤如下&#xff1a; 首先&#xff0c;--a 操作会使 a 的值减1&#xff0c;因此 a 变为 3。判断 a > b 即 3 > 3&#xff0c;此时表达式为假&#xff0c;因为 --a 后 a 并不大于 b。因此&#xff0c;程…

如何远程连接Linux服务器?

远程连接Linux服务器是通过网络连接到位于远程位置的Linux服务器&#xff0c;以进行服务器管理和操作。远程连接使得系统管理员可以方便地远程访问服务器&#xff0c;进行配置、维护和故障排除等操作&#xff0c;而不必亲自在服务器前工作。以下是一些常用的远程连接方法&#…

使用小黄鸟(HttpCanary)、VMOS Pro虚拟机对手机APP进行抓包(附带软件)

老规矩先看&#xff0c;效果图&#xff1a; 文章很详细&#xff0c;希望可以耐心看完&#xff0c;保证可以学会抓包&#xff0c;不再走冤枉路&#xff0c;小编在之前看过太多类似文章&#xff0c;折腾了太久才搞懂的&#xff0c;写这篇文章就是不想希望你们像小编一样再花时间…

qmt量化交易策略小白学习笔记第15期【qmt编程之获取龙虎榜数据】

qmt编程之获取龙虎榜数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 获取龙虎榜数据 获取指定日期区间内的龙虎榜数据 内置python C.get_longhubang(stock_list, startTime, endTime)参…

十八、【源码】二级缓存

源码地址&#xff1a;https://github.com/mybatis/mybatis-3/ 仓库地址&#xff1a;https://gitcode.net/qq_42665745/mybatis/-/tree/18-second-levelcache 二级缓存 二级缓存&#xff0c;namespace级别&#xff0c;默认关闭&#xff0c;需要手动开启&#xff0c;在xml加入…

论文阅读《SELECTIVE DOMAIN-INVARIANT FEATURE FOR GENERALIZABLE DEEPFAKEDETECTION》

作者&#xff1a;Yingxin Lai、 Guoqing Yang1、Yifan He2、Zhiming Luo、Shaozi Li 期刊&#xff1a;ICASSP-2024 目的&#xff1a;解决泛化性的问题&#xff0c;提出了3个模块 论文整体的架构图&#xff1a;&#xff08;挑选域特征不变&#xff0c;减少对图像内容或者风格…

我的编程语言学习记录:一段不断探索的旅程

目录 我的编程语言学习记录&#xff1a;一段不断探索的旅程 1.引言 2.我的编程之旅开始 第一站&#xff1a;Python — 简洁之美 第二站&#xff1a;JavaScript — 网页的魔法 第三站&#xff1a;Java — 企业级的力量 3.学习过程中的挑战与克服 1.理解概念 3.记忆语法…

德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第七周) - 结构化预测

结构化预测 0. 写在大模型前面的话1. 词法分析 1.1. 分词1.2. 词性标注 2.2. 句法分析 2.3. 成分句法分析2.3. 依存句法分析 3. 序列标注 3.1. 使用分类器进行标注 4. 语义分析 0. 写在大模型前面的话 在介绍大语言模型之前&#xff0c;先把自然语言处理中遗漏的结构化预测补…