vue3+Echarts+Nodejs实现动态数据可视化

最近在做毕设的后台管理系统,刚好需要做数据动态可视化的功能,就来记录一下具体的实现方式吧!

在开始之前就不阐述用vue创建项目的具体步骤了,主要详细讲解一下vue3、echarts和nodejs三者之间是如何实现数据的动态显示的,我这边项目是使用的vite创建的。

一、安装echarts

在vscode的终端利用npm进行以下命令

npm install echarts

二、引用、使用echarts

(1)在需要使用的组件中引入echarts

import * as echarts from 'echarts'

(2)接下来就是如何使用该组件了,这里通过一个案例来展示

<template>
    <div class="food-sale">
        <h4>美食占比情况</h4>
        <div class="food-cahrt" ref="foodChart"></div>
    </div>
</template>

<script setup>
import {ref,onMounted,onBeforeMount} from 'vue'
import * as echarts from 'echarts'
import { fontSize } from '@/utils/fontSize'
const foodChart=ref(null)  
let myfoodChart=null
//定义数据变量
const foodData=ref([
    {
        name:'',
        value:''
    }
])
const initChart=()=>{
    myfoodChart=echarts.init(foodChart.value)
    const option={
        tooltip: {
            trigger: 'item',
            backgroundColor:'rgba(62, 177, 52, .6)',
            textStyle:{
                color:'#cfd',
            }
        },
        legend: {
            orient: 'vertical',//设置图例的方向
            right: '5%',
            top: "center",
            itemWidth: 10, // 图标宽设置
            itemHeight: 10, // 图标长设置
            itemGap:20,//设置图例的间距
            textStyle: {
                fontSize: fontSize(35),
                fontFamily: 'sy-m',
            }
        },
        series: [
            {
                // name: '实时设备',
                type: 'pie',
                radius: ['40%', '60%'],
                avoidLabelOverlap: false,
                label: {
                    show: false,
                    position: 'center'
                },
                emphasis: {
                    label: {
                        show: true,
                        // fontSize:12,
                        fontSize:fontSize(30),
                        fontWeight:600,
                        lineHeight: 18,
                        color:'rgb(122, 170, 236)',
                        formatter: '{b}\n{d}%',
                        rich: {    // 显示出的内容,设置样式
                            b: {
                                fontSize: fontSize(16),
                                color:'rgb(66, 127, 212)',
                                align: 'center'
                            },
                            d: {
                                fontSize: fontSize(20),
                                padding: 0,
                            }
                        }
                    }
                },
                labelLine: {
                    show: false
                },
                data:foodData.value
            }
        ]
    }
    myfoodChart.setOption(option)
    //设置饼图自动转动
    let count = 0;
    setInterval(() => {
        myfoodChart.dispatchAction({
            type: 'downplay',
            seriesIndex: 0,
            dataIndex: count
        });
        count++;
        if (count === 5) {
            count = 0;
        }
        myfoodChart.dispatchAction({
            type: 'highlight',
            seriesIndex: 0,
            dataIndex: count
        });
    }, 2000);
}
// 图表自适应
const resizeChart = () => {
    myfoodChart.resize()
}
onMounted(() => {
    initChart()
    window.addEventListener('resize', resizeChart)
})
onBeforeMount(()=>{
    window.removeEventListener('resize', resizeChart)
})
</script>

<style lang='less' scoped>
.food-sale{
    width: 43%;
    height: 16.5vw;
    background: #fff;
    margin-top: 1vw;
    border-radius:0.5vw;
    h4{
        font-size: 16px;
        padding-left: 0.8vw;
        padding-top: 0.5vw;
    }
    .food-cahrt{
        width: 80%;
        height: 17vw;
    }
} 
</style>

三、利用nodejs模拟数据

上述是前端需要实现的页面部分,接下来是如何利用nodejs来模拟页面所需的后端数据

(1)在cmd上输入以下命令,注意此命令只可安装一次

npm install express-generator -g

(2)然后进入你自己创建的项目目录输入下面的命令,此步骤是在cmd中操作

express --view=ejs server

(3)打开服务文件夹

cd server

(4)在server文件中的routes中会有一个index.js文件,在此文件中进行模拟数据

router.get("/api/home/food",function(req, res, next){
   return res.json({
     "code":200,
     "data":{
            list:[
                {
                    name:'炒米粉',
                    value:10840
                },
                {
                    name:'拉条子拌面',
                    value:9840
                },
                {
                    name:'大盘鸡',
                    value:8560
                },
                {
                    name:'烤全羊',
                    value:8060
                },
                {
                    name:'手抓饭',
                    value:7060
                },
            ]
        }
   });
})

四、获取数据

(1)在src文件夹下新建一个名为api的文件夹,里面新建一个名为homeData.js的文件获取数据

import { get, post} from "@/utils/http.js";
//获取用户信息数据
export const getFoodList = (params) => get('/api/home/food',params);

(2)在上述需要用到该数据的组件中引入此文件

import {getFoodList} from '@/api/homeData'

(3)获取数据

获取图表数据
const getChartData=()=>{
    return new Promise((resolve, reject) =>{
        getFoodList().then(res=>{
            if(res.code===200&&res.data){
                // console.log(res,'shuju')
                foodData.value=[]
                res.data.forEach((item,index)=>{
                    foodData.value[index]={
                        name:item.name,
                        value:item.value
                    }
                })
                // console.log(chartData.xAxis,'xshuju')
            }
            // console.log(res.data,'shuju')
            resolve(res.data)
        })
        .catch(error=>{
            reject(error)
        })
    })
}

(4)挂载数据

onMounted(async() => {
   await getChartData()
})

五、结果展示

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue3是一种流行的JavaScript框架,而Echarts5是一种强大的数据可视化库。结合Vue3和Echarts5,可以很容易地实现世界地图的可视化效果。 首先,你需要在Vue项目中安装Echarts5。可以通过npm或yarn来安装echarts: ``` npm install echarts ``` 或者 ``` yarn add echarts ``` 安装完成后,你可以在Vue组件中引入Echarts,并使用它来绘制世界地图。 在Vue组件中,你可以使用`<template>`标签来定义HTML模板,使用`<script>`标签来编写JavaScript代码,使用`<style>`标签来定义CSS样式。 下面是一个简单的示例代码,展示了如何在Vue3中使用Echarts5绘制世界地图: ```vue <template> <div id="world-map" style="width: 100%; height: 400px;"></div> </template> <script> import * as echarts from 'echarts'; export default { mounted() { this.drawWorldMap(); }, methods: { drawWorldMap() { const chartDom = document.getElementById('world-map'); const myChart = echarts.init(chartDom); // 定义地图数据 const mapData = [ { name: 'China', value: 100 }, { name: 'United States', value: 50 }, // 其他国家... ]; // 配置地图选项 const option = { tooltip: { trigger: 'item', formatter: '{b}: {c}', }, visualMap: { min: 0, max: 100, left: 'left', top: 'bottom', text: ['High', 'Low'], seriesIndex: [1], inRange: { color: ['#e0ffff', '#006edd'], }, }, series: [ { type: 'map', mapType: 'world', roam: true, label: { show: true, }, data: mapData, }, ], }; // 使用配置项绘制地图 myChart.setOption(option); }, }, }; </script> <style> #world-map { width: 100%; height: 400px; } </style> ``` 在上面的代码中,我们首先引入了Echarts库,然后在`mounted`生命周期钩子函数中调用`drawWorldMap`方法来绘制地图。`drawWorldMap`方法中,我们使用`echarts.init`方法初始化一个Echarts实例,并通过配置项`option`来定义地图的样式和数据。最后,使用`myChart.setOption(option)`方法将配置项应用到地图上。 这样,你就可以在Vue项目中使用Vue3和Echarts5来实现世界地图的可视化效果了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值