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

目录

前言

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>

效果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

harbor1.7.1的访问报错502 bad gateway

背景&#xff1a; 在访问harbor镜像仓库时提示报错如下&#xff1a; 问题分析&#xff1a; 根据提供的报错内容来看时harbor服务的nginx组件服务异常了的&#xff0c;导致无法访问harbor服务&#xff0c;查看harbor服务结果如下&#xff1a; serviceharbor:~/harbor$ docker…

MicroPython esp32 连接wifi 配网

整体流程&#xff1a; 1&#xff09;开启STA 和 AP 模式 2&#xff09;扫描周围wifi 保存在 变量 wifi_list&#xff08;后面要用到&#xff09; 3) 尝试STA模式连接Wifi&#xff0c;并查寻状态。 4) 如果STA 无法连网&#xff0c;就用AP模式&#xff0c;创建热点。 5&a…

Vue数据动态代理机制的实现

Object.defineProperty() &#xff08;1&#xff09;这个方法是ES5新增的 &#xff08;2&#xff09;这个方法的作用是&#xff1a;给对象新增属性&#xff0c;或者设置对象原有的属性 &#xff08;3&#xff09;用法&#xff1a;Object.defineProperty(给哪个对象新增属性,‘…

【吊打面试官系列-Mysql面试题】BLOB 和 TEXT 有什么区别 ?

大家好&#xff0c;我是锋哥。今天分享关于 【BLOB 和 TEXT 有什么区别&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; BLOB 和 TEXT 有什么区别 &#xff1f; BLOB 是一个二进制对象&#xff0c;可以容纳可变数量的数据。TEXT 是一个不区分大小写的 BLOB。 1…

InfiniGate自研网关实现思路七

25.网关Nginx负载模型配置 通过模拟多个HTTP服务配置到 Nginx 做负载均衡&#xff0c;以学习API网关负载的配置和使用 API 网关是用于支撑分布式 RPC 接口协议转换提供 HTTP 调用的一套服务&#xff0c;那么 API 网关系统就需要可横向扩展来满足系统的吞吐量诉求。所以这里需…

两轮自平衡小车资料(L298N 模块原理图及使用说明+c源码)

本文详细介绍了基于STM32微控制器的两轮自平衡小车的设计与实现过程。内容包括小车的硬件选型、电路设计、软件编程以及PID控制算法的应用。通过陀螺仪和加速度计获取小车的姿态信息&#xff0c;利用PID控制算法调整电机输出&#xff0c;实现小车的自主平衡。此外&#xff0c;还…

Elasticsearch之写入原理以及调优

1、ES 的写入过程 1.1 ES支持四种对文档的数据写操作 create&#xff1a;如果在PUT数据的时候当前数据已经存在&#xff0c;则数据会被覆盖&#xff0c;如果在PUT的时候加上操作类型create&#xff0c;此时如果数据已存在则会返回失败&#xff0c;因为已经强制指定了操作类型…

调查显示各公司在 IT 安全培训方面存在差距

网络安全提供商 Hornetsecurity 最近进行的一项调查显示&#xff0c;许多组织的 IT 安全培训存在严重缺陷。 这项调查是在伦敦举行的 Infosecurity Europe 2024 期间发布的&#xff0c;调查发现 26% 的组织没有为其最终用户提供任何 IT 安全培训。 这些调查结果来自世界各地的…

Nginx的https功能和防盗链

目录 一.HTTPS功能简介 二.https自签名证书 三.防盗链 一.HTTPS功能简介 Web网站的登录页面都是使用https加密传输的&#xff0c;加密数据以保障数据的安全&#xff0c;HTTPS能够加密信息&#xff0c;以免敏感信息被第三方获取&#xff0c;所以很多银行网站或电子邮箱等等安…

力扣hot100:739. 每日温度/54. 螺旋矩阵

文章目录 一、 739. 每日温度二、54. 螺旋矩阵1、模拟螺旋矩阵的路径2、按层模拟 一、 739. 每日温度 LeetCode&#xff1a;739. 每日温度 经典单调栈问题&#xff0c;求下一个更大的数。 使用单调递减栈&#xff0c;一个元素A出栈&#xff0c;当且仅当它第一次出现比它更大…

Linux常见故障处理之df命令卡住不输出

一、背景说明 朋友咨询Linux系统下输入df -h命令后没有任何输出结果&#xff0c;博主的第一反应是/根分区磁盘空间满了&#xff0c;朋友说cd等其他命令可以执行。博主又猜测可能是有人误定义了命令别名&#xff0c;进一步确认命令卡住在等待输出页面。事后博主想起来可能是共享…

【Docker系列】跨平台 Docker 镜像构建:深入理解`--platform`参数

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

【计网复习】应用层总结(不含HTTP和错题重点解析)

应用层总结&#xff08;不含HTTP和错题重点解析&#xff09; 应用层简介 应用层的主要功能常见的应用层协议小林对于应用层通常的解释 网络应用模型 客户端-服务器模型&#xff08;Client-Server Model, C/S&#xff09; 特点优点缺点应用场景 对等网络模型&#xff08;Peer-to…

中文文案写作有哪些合适的AIGC工具?

这是计育韬老师第 8 次开展面向全国高校的新媒体技术公益巡讲活动了。而在每场讲座尾声&#xff0c;互动答疑环节往往反映了高校师生当前最普遍的运营困境&#xff0c;特此计老师在现场即兴答疑之外&#xff0c;会尽量选择有较高价值的提问进行文字答疑梳理。 *本轮巡讲主题除了…

8.数砖数

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/879 题目描述 给定一种 2222 规格的瓷砖,…

标准发布实施 | 《村镇污水处理一体化集成装备技术规范》

根据《中华人民共和国标准化法》以及国家标准化管理委员会、民政部联合制定的《团体标准管理规定》&#xff0c;依据全国团体标准信息平台和《中华环保联合会团体标准管理办法&#xff08;试行&#xff09;》&#xff0c;全国团体标准《村镇污水处理一体化集成装备技术指南》&a…

Scanpy(3)单细胞数据分析常规流程

单细胞数据分析常规流程 面对高效快速的要求上,使用R分析数据越来越困难,转战Python分析,我们通过scanpy官网去学习如何分析单细胞下游常规分析。 数据3k PBMC来自健康的志愿者,可从10x Genomics免费获得。在linux系统上,可以取消注释并运行以下操作来下载和解压缩数据。…

【下篇】从 YOLOv1 到 YOLOv8 的 YOLO 物体检测模型历史

YOLO 型号之所以闻名遐迩,主要有两个原因:其速度和准确性令人印象深刻,而且能够快速、可靠地检测图像中的物体。上回我解释了YoloX, 今天从Yolov6开始。 YOLOv6:面向工业应用的单级物体检测框架 美团视觉人工智能事业部(Meituan Vision AI Department)于 2022 年 9 月在…

公众号首图次图封面设计工具

制作图 介绍 《制作图》是一款用来设计封面的工具&#xff0c;比如你可以为你的博客、视频、公众号等设计你自己喜欢的封面。 预览 网址 https://wuxianqiang.github.io/fabritor/ 公众号首图、次图&#xff0c;按尺寸标准一键生成 该工具为公众号等自媒体创作者的提效神…

Photoshop版本选择及系统要求

1、ps2018cc/2020cc版本 适合新手&#xff0c;增加了很多智能化操作&#xff0c;非常方便好上手。 2020&#xff1a; 2、ps2015版本 cc2015版本不论是功能还是硬件上&#xff0c;都是不二选择&#xff0c;适合于配置较低的电脑&#xff0c;该有的基本功能它都有。 3、2021/2…