解决 ECharts 图表无数据显示问题

news2025/4/26 6:56:07

问题:

在开发项目时,后端明明已经成功返回了数据,但在展示手账发布数量趋势和树洞帖子发布数量趋势的 ECharts 图表中,却只有坐标轴,没有任何数据显示。

以我的VUE项目开发可视化面板为例,下面将详细分析可能出现的情况以及对应的解决办法。

当后端有数据返回,但 ECharts 图表只有坐标轴而没有数据显示时,可能是由以下几个原因导致的,下面针对手账发布数量趋势和树洞帖子发布数量趋势的 ECharts 图表进行详细分析:

1. 数据处理问题

在 getArticlePostTrendData 和 getTreeholePostTrendData 函数中,可能存在数据处理不当的情况,导致 xAxis 和 yAxis 数据没有正确填充到 ECharts 选项中。

解决方案

检查 forEach 循环中对数据的处理是否正确,确保 createDate 能够正确匹配到 dates 数组中的日期。可以在关键位置添加 console.log 语句进行调试,例如:

// 获取手账发布数量趋势数据
const getArticlePostTrendData = async () => {
    try {
        const response = await articleByWeekService();
        const data = response.data;
        console.log('手账数据:', data);

        // 生成最近一周的日期数组
        const now = new Date();
        const oneWeekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
        const dates = [];
        for (let d = new Date(oneWeekAgo); d <= now; d.setDate(d.getDate() + 1)) {
            dates.push(new Date(d).toISOString().split('T')[0]);
        }

        // 初始化每天的新增手账数为 0
        const counts = new Array(7).fill(0);

        // 统计每天新增的手账数
        data.forEach(item => {
            const createDate = new Date(item.createTime).toISOString().split('T')[0];
            console.log('手账创建日期:', createDate);
            const index = dates.indexOf(createDate);
            if (index !== -1) {
                counts[index]++;
            }
        });

        articlePostTrendData.value.xAxis = dates;
        articlePostTrendData.value.yAxis = counts;
        console.log('手账 xAxis:', articlePostTrendData.value.xAxis);
        console.log('手账 yAxis:', articlePostTrendData.value.yAxis);

        initArticlePostTrendChart();
    } catch (error) {
        console.error('获取手账发布数量趋势数据时出错:', error);
    }
};

// 获取树洞帖子发布数量趋势数据
const getTreeholePostTrendData = async () => {
    try {
        const response = await treeholebyweekService();
        const data = response.data;
        console.log('树洞数据:', data);

        // 生成最近一周的日期数组
        const now = new Date();
        const oneWeekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
        const dates = [];
        for (let d = new Date(oneWeekAgo); d <= now; d.setDate(d.getDate() + 1)) {
            dates.push(new Date(d).toISOString().split('T')[0]);
        }

        // 初始化每天的新增树洞帖子数为 0
        const counts = new Array(7).fill(0);

        // 统计每天新增的树洞帖子数
        data.forEach(item => {
            const createDate = new Date(item.createTime).toISOString().split('T')[0];
            console.log('树洞创建日期:', createDate);
            const index = dates.indexOf(createDate);
            if (index !== -1) {
                counts[index]++;
            }
        });

        treeholePostTrendData.value.xAxis = dates;
        treeholePostTrendData.value.yAxis = counts;
        console.log('树洞 xAxis:', treeholePostTrendData.value.xAxis);
        console.log('树洞 yAxis:', treeholePostTrendData.value.yAxis);

        initTreeholePostTrendChart();
    } catch (error) {
        console.error('获取树洞帖子发布数量趋势数据时出错:', error);
    }
};
检查一下:

说明数据处理没有问题

2. 异步数据加载问题

由于数据是异步获取的,可能在 ECharts 初始化时数据还未完全加载完成,导致图表没有正确显示数据。

解决方案

确保在数据加载完成后再初始化 ECharts 图表。可以使用 await 关键字确保数据加载完成后再调用初始化函数。

检查一下:

异步数据加载没有问题

3. ECharts 选项问题

在 initArticlePostTrendChart 和 initTreeholePostTrendChart 函数中,可能存在 ECharts 选项设置错误的情况。

解决方案

检查 xAxis 和 yAxis 的数据绑定是否正确,确保 data 属性指向正确的数组。例如:

const initArticlePostTrendChart = () => {
    const chartDom = document.getElementById('article-post-trend');
    const myChart = echarts.init(chartDom);
    const option = {
        title: {
            text: '手账发布数量趋势'
        },
        tooltip: {
            trigger: 'axis'
        },
        xAxis: {
            data: articlePostTrendData.value.xAxis // 确保使用 value 属性
        },
        yAxis: {
            type: 'value',
            integer: true
        },
        series: [
            {
                name: '手账数量',
                type: 'line',
                data: articlePostTrendData.value.yAxis // 确保使用 value 属性
            }
        ]
    };
    myChart.setOption(option);
};

const initTreeholePostTrendChart = () => {
    const chartDom = document.getElementById('treehole-post-trend');
    const myChart = echarts.init(chartDom);
    const option = {
        title: {
            text: '树洞帖子发布数量趋势'
        },
        tooltip: {
            trigger: 'axis'
        },
        xAxis: {
            data: treeholePostTrendData.value.xAxis // 确保使用 value 属性
        },
        yAxis: {
            type: 'value',
            integer: true
        },
        series: [
            {
                name: '树洞帖子数量',
                type: 'line',
                data: treeholePostTrendData.value.yAxis // 确保使用 value 属性
            }
        ]
    };
    myChart.setOption(option);
};
检查一下:

发现确实是少了value属性

通过以上步骤,你可以逐步排查问题并解决 ECharts 图表没有数据显示的问题。

成功解决:

总结

当 ECharts 图表只有坐标轴但没有数据显示时,要从数据传递、数据格式、图表初始化时机和元素获取等方面进行检查。通过仔细排查,通常可以找到问题并解决。

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

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

相关文章

spacy安装失败报错

报错 使用命令pip install spacy安装spacy时总是报错&#xff08;python -m pip install spacy方式安装同样报错&#xff09; 解决办法 使用conda安装&#xff0c;conda能够避免很多不必要的依赖包。 命令&#xff1a;conda install spacy 安装成功列表展示

C++在Linux上生成动态库并调用接口测试

加减乘除demo代码 项目结构 CPP/ ├── calculator.cpp ├── calculator.h ├── main.cpp 头文件 #ifndef CALCULATOR_H #define CALCULATOR_H#ifdef __cplusplus extern "C" {#endifdouble add(double a, double b);double subtract(double a, double b…

前端性能测试工具 —— WebPageTest

测试工具介绍 WebPageTest 是一个用于测量和分析网页性能的工具。它提供了详细的诊断信息&#xff0c;帮助用户了解网页在不同条件下的表现。用户可以选择全球不同的测试地点&#xff0c;使用真实的浏览器&#xff0c;并自定义网络条件进行测试。WebPageTest 还支持核心网络指…

北邮LLMs在导航中的应用与挑战!大模型在具身导航中的应用进展综述

作者&#xff1a;Jinzhou Lin, Han Gao, Xuxiang Feng, Rongtao Xu, Changwei Wang, Man Zhang, Li Guo, Shibiao Xu 单位&#xff1a;北京邮电大学人工智能学院&#xff0c;中国科学院自动化研究所多模态人工智能系统国家重点实验室&#xff0c;中科院空间信息研究所&#xf…

Windows下ElasticSearch8.x的安装步骤

下载ElasticSearch&#xff1a;https://www.elastic.co/downloads/elasticsearch &#xff08;我下载的是目前最新版8.17.4&#xff09;解压ElasticSearch 进入到ElasticSearch的bin目录下双击elasticsearch.bat 弹出控制台并开始执行&#xff0c;在这一步会输出初始账号和密码…

【高性能缓存Redis_中间件】一、快速上手redis缓存中间件

一、铺垫 在当今的软件开发领域&#xff0c;消息队列扮演着至关重要的角色。它能够帮助我们实现系统的异步处理、流量削峰以及系统解耦等功能&#xff0c;从而提升系统的性能和可维护性。Redis 作为一款高性能的键值对数据库&#xff0c;不仅提供了丰富的数据结构&#xff0c;…

AI Agent入门指南

图片来源网络 ‌一、开箱暴击&#xff1a;你以为的"智障音箱"&#xff0c;其实是赛博世界的007‌ ‌1.1 从人工智障到智能叛逃&#xff1a;Agent进化史堪比《甄嬛传》‌ ‌青铜时代&#xff08;2006-2015&#xff09;‌ “小娜同学&#xff0c;关灯” “抱歉&…

海洋大地测量基准与水下导航系列之八我国海洋水下定位装备发展现状

中国国家综合PNT体系建设重点可概括为“51N”&#xff0c;“5”指5大基础设施&#xff0c;包括重点推进下一代北斗卫星导航系统、积极发展低轨导航增强系统、按需发展水下导航系统、大力发展惯性导航系统、积极探索脉冲星导航系统&#xff1b;“1”是实现1个融合发展&#xff0…

谷歌开源代理开发工具包(Agent Development Kit,ADK):让多智能体应用的构建变得更简

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

noscript 标签是干什么的

vue public目录下的 index.html 会有 <noscript> 标签不知道是干吗的。 其实 noscript 标签在不支持或是禁用JavaScript 的浏览器中显示替代的内容。这个元素可以包含任何 HTML 元素。这个标签的用法也非常简单&#xff1a; <noscript><strong>Were sorry …

[创业之路-366]:投资尽职调查 - 尽调核心逻辑与核心影响因素:价值、估值、退出、风险、策略

目录 一、VC投资的本质是冒着不确定性风险进行买卖、生意&#xff0c;为了赚取高额回报 1、VC投资的核心本质 2、VC投资的运作机制 3、VC投资的风险与挑战 4、VC投资的底层逻辑 5、总结&#xff1a;VC投资的本质再定义 二、尽调核心逻辑 1、尽调的含义 2、尽调的逻辑方…

Hyprnote开源程序是一款记录和转录您会议的 AI 记事本。 本地优先且可扩展 。

一、软件介绍 文末提供源码下载学习 Hyprnote开源程序是一款记录和转录您会议的 AI 记事本。 从您的原始会议记录中生成强大的摘要&#xff0c;本地优先且可扩展 。使用开源模型 &#xff08;Whisper & Llama&#xff09; 离线工作&#xff0c;高度可扩展 &#xff0c;由插…

上篇:新能源轻卡城配物流经济/动力模式量化定义(理论篇)——数学暴力破解工程困局

副标题&#xff1a;用微分方程撕开模式切换本质&#xff0c;用传感器数据重构载重真相 引言&#xff1a;为什么轻卡模式定义比乘用车难10倍&#xff1f; 行业现状痛点&#xff1a; 中国新能源轻卡日均载重波动高达300%&#xff08;空载0kg→满载4.5吨&#xff09;某头部车企实…

Ubuntu22环境下,Docker部署阿里FunASR的gpu版本

番外: 随着deepseek的爆火,人工智能相关的开发变得异常火爆,相关的大模型开发很常见的agent智能体需要ASR语音识别的功能,阿里开源的FunASR几乎是把一个商业的项目放给我们使用了。那么我们项目中的生产环境怎么部署gpu版本的语音识别服务呢?经过跟deepseek的一上午的极限…

内网邮箱服务器搭建-详解

目录 一、背景 二、搭建邮箱需要具备的基础知识 1、smtp&#xff08;Simple Mail Transfer Protocol&#xff09; SMTP工作原理 SMTP 命令 SMTP 协议端口 2、pop3&#xff08;Post Office Protocol&#xff09; POP3特点 POP3工作原理 3、imap4&#xff08;Internet M…

使用 LLaMA-Factory 微调 llama3 模型(二)

使用 LLaMA-Factory 微调 llama3 模型 1. LLaMA-Factory模型介绍 https://github.com/hiyouga/LLaMA-FactoryLLaMA-Factory 是一个用于大型语言模型&#xff08;LLM&#xff09;微调的工具&#xff0c;它旨在简化大型语言模型的微调过程&#xff0c; 使得用户可以快速地对模型…

并发编程--条件量与死锁及其解决方案

并发编程–条件量与死锁及其解决方案 文章目录 并发编程--条件量与死锁及其解决方案1.条件量1.1条件量基本概念1.2条件量的使用 2. 死锁 1.条件量 1.1条件量基本概念 在许多场合中&#xff0c;程序的执行通常需要满足一定的条件&#xff0c;条件不成熟的时候&#xff0c;任务…

JAVA SE 自我总结

目录 1. 字面常量 2. 数据类型 3. 变量 4. 类型转换 5. 实参和形参的关系 6. 数组 6.1 数组的概念 6.2 动态初始化 6.3 静态初始化 7. 数据区 ​编辑 8. 数组的拷贝 8.1 赋值拷贝 8.2 方法拷贝 9. 代码块 10. 内部类 10.1 实例内部类 10.2 静态内部类 10.3 …

RAG创建向量数据库:docsearch = FAISS.from_texts(documents, embeddings)

RAG创建向量数据库:docsearch = FAISS.from_texts(documents, embeddings) 代码解释 docsearch = FAISS.from_texts(documents, embeddings) 这行代码主要作用是基于给定的文本集合创建一个向量数据库(这里使用 FAISS 作为向量数据库工具 )。具体说明如下: FAISS :FAISS …

虚幻引擎5-Unreal Engine笔记之“将MyStudent变量设置为一个BP_Student的实例”这句话如何理解?

虚幻引擎5-Unreal Engine笔记之“将MyStudent变量设置为一个BP_Student的实例”这句话如何理解&#xff1f; code review! 文章目录 虚幻引擎5-Unreal Engine笔记之“将MyStudent变量设置为一个BP_Student的实例”这句话如何理解&#xff1f;理解这句话的关键点1.类&#xff08…