从0开始搭建vue + flask 旅游景点数据分析系统(四):编写前端首页【数据驾驶舱】

news2024/11/17 12:25:00

  • 本期我们编写数据驾驶舱页面(Dashboard)这个页面。
  • 主要任务是引入echarts 组件编写数据驾驶舱页面。

视频教程后续会更新在我的B站:https://space.bilibili.com/1583208775?spm_id_from=666.25.0.0
推荐从教程第一集开始从零开始学习:https://blog.csdn.net/roccreed/article/details/140734085?spm=1001.2014.3001.5501

1 美化菜单

先美化下菜单,给aside 添加一个class=“aside”,然后写一下背景颜色样式:

.aside{
  background-color: #545c64;;
}

给el-menu添加3个有关颜色的属性,删掉原来的颜色配置

<el-menu :default-active="activeIndex"
               background-color="#545c64"
               text-color="#fff"
               active-text-color="#ffd04b"
               class="el-menu-vertical">

同时,把菜单的名字也修改一下

  <el-menu-item index="/dashboard" @click="navigateTo('/dashboard')">数据驾驶舱</el-menu-item>
  <el-menu-item index="/users" @click="navigateTo('/users')">用户管理</el-menu-item>

再此基础上,再引入elemnt-ui自带的图标方案,进一步美化菜单,为代码添加图标:

       	<el-menu-item index="/dashboard" @click="navigateTo('/dashboard')">
          <i class="el-icon-s-marketing"></i>
          数据驾驶舱</el-menu-item>
        <el-menu-item index="/users" @click="navigateTo('/users')">
          <i class="el-icon-s-custom"></i>
          用户管理</el-menu-item>

然后就获得了和官方菜单例子中一样的配色了:

在这里插入图片描述

2 数据驾驶舱页面-布局编写

还是先搞定布局,修改Dashboard.vue页面,这里使用官方的row和col来简单实现布局效果,可以参考官方文档:https://element.eleme.cn/#/zh-CN/component/layout

<template>
  <div>
    <el-row :gutter="20">
      <!-- Top chart -->
      <el-col :span="24">
        <div class="chart" style="background-color: #f56c6c; height: 300px;">
          Top Chart
        </div>
      </el-col>
    </el-row>
    <el-row :gutter="20" style="margin-top: 20px;">
      <!-- Bottom left chart -->
      <el-col :span="12">
        <div class="chart" style="background-color: #67c23a; height: 300px;">
          Bottom Left Chart
        </div>
      </el-col>
      <!-- Bottom right chart -->
      <el-col :span="12">
        <div class="chart" style="background-color: #409eff; height: 300px;">
          Bottom Right Chart
        </div>
      </el-col>
    </el-row>
  </div>
</template>

<script>
export default {
  name: 'Dashboard',
};
</script>

<style scoped>
.chart {
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-size: 20px;
  border-radius: 10px;
}
</style>

使用不同颜色展示布局编写的成果:

在这里插入图片描述

下一步开始集成 echarts 和 vue-echarts,然后把上图中三个图形替换为echarts的图形。

3 安装 echarts

执行命令

npm install echarts vue-echarts

vue-echarts 现在已经是7.0-beta版本了,可以查看其github页面获得更多信息:https://github.com/ecomfe/vue-echarts/blob/main/README.zh-Hans.md

4 注册 vue-echarts 组件

修改main.js,添加这3行代码

import ECharts from 'vue-echarts';
import 'echarts';
Vue.component('v-chart', ECharts);

5 编写折线图组件

下面编写一个折线图组件,并且放到Dashboard.vue中的Top Chart的位置。

在components文件夹下创建LineChart.vue:

<template>
  <div>
    <v-chart :option="chartOptions" style="width: 100%; height: 300px;"></v-chart>
  </div>
</template>

<script>
export default {
  name: 'TouristSpotRanking',
  data() {
    return {
      chartOptions: {
        title: {
          text: '旅游景点评论排名',
        },
        tooltip: {
          trigger: 'axis',
        },
        legend: {
          data: ['评论数'],
        },
        xAxis: {
          type: 'category',
          data: ['景点A', '景点B', '景点C', '景点D', '景点E'],
        },
        yAxis: {
          type: 'value',
        },
        series: [
          {
            name: '评论数',
            type: 'line',
            data: [820, 932, 901, 934, 1290],
          },
        ],
      },
    };
  },
};
</script>

<style scoped>
/* 添加一些样式使图表看起来更好 */
</style>

然后修改Dashboard.vue文件

# 先把.chart样式中的flex去掉
.chart {
  /*display: flex;*/
  align-items: center;
  justify-content: center;
  color: white;
  font-size: 20px;
  border-radius: 10px;
}

# 引入LineChart组件
<script>
import LineChart from "@/components/LineChart";

export default {
  name: 'Dashboard',
  components: {
    LineChart
  }
};
</script>

# 修改原本的红色区域的代码
<el-col :span="24">
        <div class="chart" style="background-color: #f4eeee; height: 300px;">
          <LineChart/>
        </div>
      </el-col>

为了展示效果把div的背景色改为淡灰色,这样就完成了第一个图形的编写:

在这里插入图片描述

6 编写柱状图 & 饼图 组件

继续在components下编写BarChart.vue

<template>
  <div>
    <v-chart :option="chartOptions" style="width: 100%; height: 400px;"></v-chart>
  </div>
</template>

<script>
export default {
  name: 'TouristSpotRating',
  data() {
    return {
      chartOptions: {
        title: {
          text: '旅游景点评分排名',
        },
        tooltip: {
          trigger: 'axis',
        },
        xAxis: {
          type: 'category',
          data: ['景点A', '景点B', '景点C', '景点D', '景点E'],
        },
        yAxis: {
          type: 'value',
          max: 10,
        },
        series: [
          {
            name: '评分',
            type: 'bar',
            data: [8.5, 9.0, 7.5, 9.3, 8.0],
            itemStyle: {
              color: '#67c23a',
            },
          },
        ],
      },
    };
  },
};
</script>

<style scoped>
/* 添加一些样式使图表看起来更好 */
</style>

编写PieChart.vue

<template>
  <div>
    <v-chart :option="chartOptions" style="width: 100%; height: 400px;"></v-chart>
  </div>
</template>

<script>
export default {
  name: 'PieChart',
  data() {
    return {
      chartOptions: {
        title: {
          text: '日本景点城市分布'
        },
        tooltip: {},
        series: [{
          type: 'pie',
          data: [
            {name:'东京',value:104},
            {name:'大阪',value:81},
            {name:'京都',value:47},
            {name:'横滨',value:51},
            {name:'名古屋',value:62}]
        }]
      },
    };
  },
};
</script>

<style scoped>
/* 添加一些样式使图表看起来更好 */
</style>

引入到Dashboard.vue中

import LineChart from "@/components/LineChart";
import BarChart from "@/components/BarChart";
import PieChart from "@/components/PieChart";

export default {
  name: 'Dashboard',
  components: {
    LineChart, BarChart, PieChart
  }
};

修改template部分

<el-col :span="12">
        <div class="chart" style="background-color: #f4eeee; height: 400px;">
          <bar-chart/>
        </div>
      </el-col>
      <!-- Bottom right chart -->
      <el-col :span="12">
        <div class="chart" style="background-color: #f4eeee; height: 400px;">
          <pie-chart/>
        </div>
      </el-col>

完成效果:

在这里插入图片描述

小结

这期内容非常多啊(1)本节我们完成了echarts的引入,同时做了3个静态的图形,动态的数据等待后端程序搭建起来后就可以实现。(2)本节在菜单中引入了element-ui的图标

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

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

相关文章

PyCharm2024 专业版激活设置中文

PyCharm2024 专业版激活设置中文 官网下载最新版&#xff1a;https://www.jetbrains.com/zh-cn/pycharm/download 「hack-jet激活idea家族.zip」链接&#xff1a;https://pan.quark.cn/s/4929a884d8fe 激活步骤&#xff1a; 官网下载安装PyCharm &#xff1b;测试使用的202…

HDMI的等长要求到底是多少?

四对差分走线对内误差最好做到 5mil 范围之内&#xff0c;对与对的差分误差最好控制在 10mil 范围之内。同时&#xff0c;对与对之间的间距要求做到 15mil&#xff0c;空间准许的情况下尽量拉开&#xff0c;减小串扰。 作者&#xff1a;凡亿教育 https://www.bilibili.com/rea…

VulnHub:doubletrouble1

靶机下载地址 trouble1 信息收集 主机发现 攻击机ip&#xff1a;192.168.31.218&#xff0c;扫描攻击机同网段存活ip。 nmap 192.168.31.0/24 -Pn -T4 确认目标机ip&#xff1a;192.168.31.174 端口扫描 nmap 192.168.31.174 -A -p- -T4 开放了22,80端口。 目录扫描 访…

小白学大模型:LLaMA-Factory 介绍与使用

最近这一两周看到不少互联网公司都已经开始秋招提前批了。 不同以往的是&#xff0c;当前职场环境已不再是那个双向奔赴时代了。求职者在变多&#xff0c;HC 在变少&#xff0c;岗位要求还更高了。 最近&#xff0c;我们又陆续整理了很多大厂的面试题&#xff0c;帮助一些球友…

Linux:进程信号(二.信号的保存与处理、递达、volatile关键字、SIGCHLD信号)

上次介绍了&#xff1a;(Linux&#xff1a;进程信号&#xff08;一.认识信号、信号的产生及深层理解、Term与Core&#xff09;)[https://blog.csdn.net/qq_74415153/article/details/140624810] 文章目录 1.信号保存1.1递达、未决、阻塞等概念1.2再次理解信号产生与保存1.3信号…

ES6语法详解,面试必会,通俗易懂版

目录 Set的基本使用WeakSet 使用Set 和 WeakSet 区别内存泄漏示例&#xff1a;使用普通 Set 保存 DOM 节点如何避免这个内存泄漏MapWeakMap 的使用 Set的基本使用 在ES6之前&#xff0c;我们存储数据的结构主要有两种&#xff1a;数组、对象。 在ES6中新增了另外两种数据结构&a…

Pytorch深度学习快速入门(中)

Pytorch深度学习快速入门&#xff08;中&#xff09; 一、Containers&#xff08;神经网络的基本骨架&#xff09;&#xff08;一&#xff09;Module 的使用&#xff08;二&#xff09;Sequential 的使用<搭建小实战> 二、Convolution Layers&#xff08;卷积层&#xff…

加密货币赋能跨境电商:PayPal供应链金融服务如何引领行业新趋势

跨境电商行业近年来呈现出爆发式增长&#xff0c;随着全球化贸易壁垒的降低和数字经济的快速发展&#xff0c;越来越多的商家和消费者跨越国界进行交易。根据eMarketer的数据&#xff0c;全球跨境电商交易额在2023年已超过4万亿美元&#xff0c;并预计在未来几年内仍将保持两位…

Golang | Leetcode Golang题解之第301题删除无效的括号

题目&#xff1a; 题解&#xff1a; func checkValid(str string, lmask, rmask int, left, right []int) bool {cnt : 0pos1, pos2 : 0, 0for i : range str {if pos1 < len(left) && i left[pos1] {if lmask>>pos1&1 0 {cnt}pos1} else if pos2 <…

403 forbidden (13: Permission denied)

403 forbidden (13: Permission denied) 目录 403 forbidden (13: Permission denied) 【常见模块错误】 【解决方案】 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&#xff0c;热衷分享知识&#xff0c;武汉城市开发者…

手撕Leetcode个人笔记【第二周-数组-链表】

2. 两数相加 中等 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;…

初识HTML文件,创建自己的第一个网页!

本文旨在初步介绍HTML&#xff08;超文本标记语言&#xff09;&#xff0c;帮助读者理解HTML中的相关术语及概念&#xff0c;并使读者在完成本文的阅读后可以快速上手编写一个属于自己的简易网页。 一、HTML介绍 HTML(全称HyperText Markup Language&#xff0c;超文本标记语言…

探索Python的进度条神器:tqdm

文章目录 探索Python的进度条神器&#xff1a;tqdm一、背二、tqdm简介三、安装tqdm四、tqdm的五个简单使用示例五、tqdm在不同场景下的应用六、常见问题及解决方案七、总结 探索Python的进度条神器&#xff1a;tqdm 一、背 景&#xff1a;为什么选择tqdm&#xff1f; 在Python…

扫雷游戏小程序

目录 一.文件 1.头文件 2.源文件 二.游戏界面和执行(test.c) 三.函数实现(void game部分,源文件game.c) 1.定义雷二维数组和展示二维数组 2.初始化地雷数组 3.初始化显示的数组 4.显示当前的情况 5.随机放置地雷 6.排雷 ps:深度优先遍历数组 四.结束 一.文件 1.头…

基于图卷积神经网络(GCN)的高光谱图像分类详细教程(含python代码)

目录 一、背景 二、基于卷积神经网络的代码实现 1、安装依赖库 2、建立图卷积神经网络 3、建立数据的边 4、训练模型 5、可视化 三、项目代码 一、背景 图卷积神经网络&#xff08;Graph Convolutional Networks, GCNs&#xff09;在高光谱图像分类中是一种有效的方法…

Unity + Hybridclr + Addressable + 微信小程序 热更新报错

报错时机&#xff1a; Generate All 怎么All 死活就是报错 生成微信小程序&#xff0c;并启动后 报错内容&#xff1a; MissingMethodException:AoT generic method notinstantiated in aot.assembly:Unity.ResourceManager:dll, 原因&#xff1a; Hybridclr 开发文档 解…

【人工智能】深度剖析:Midjourney与Stable Diffusion的全面对比

文章目录 &#x1f34a;1 如何选择合适的AI绘画工具1.1 个人需求选择1.2 比较工具特点1.3 社区和资源 &#x1f34a;2 Midjourney VS Stable Diffusion&#xff1a;深度对比与剖析 2.1 使用费用对比 2.2 使用便捷性与系统兼容性对比 2.3 开源与闭源对比 2.4 图片质量对比 2.5 上…

MATLAB基础应用精讲-【数模应用】Poisson 回归分析(附R语言代码实现)

目录 前言 知识储备 基于泊松回归、负二项回归模型 数据分布介绍 模型介绍 模型的选择 案例介绍 算法原理 泊松回归 数学模型 适用条件 参数估计与假设检验 SPSSAU Poisson 回归案例 1、背景 2、理论 3、操作 4、SPSSAU输出结果 5、文字分析 6、剖析 疑难解…

【探索Linux】P.42(传输层 —— TCP面向字节流 | TCP粘包问题 | TCP异常情况 )

阅读导航 引言一、TCP面向字节流二、TCP粘包问题1. 粘包原因2. 粘包类型3. 粘包的影响4. 解决粘包的方法5. 对于UDP协议来说, 是否也存在 "粘包问题" 呢? 三、TCP异常情况温馨提示 引言 继上篇深入剖析TCP协议的拥塞控制、延迟应答和捎带应答之后&#xff0c;本文将…

TCP 协议的 time_wait 超时时间

优质博文&#xff1a;IT-BLOG-CN 灵感来源 Time_Wait 产生的时机 TCP四次挥手的流程 如上所知&#xff1a;客户端在收到服务端第三次FIN挥手后&#xff0c;就会进入TIME_WAIT状态&#xff0c;开启时长为2MSL的定时器。 【1】MSL是Maximum Segment Lifetime报文最大生存时间…