数据可视化——使用echars图表展示

news2024/11/25 4:59:32

目录

1、前言

2、解决方案

2.1、echars(前端等组件库)

2.2、PPT等其他软件工具

2.3、使用flourish等在线数据可视化制作平台

2.4、自己用代码实现


1、前言

  • 有一个小作业,需要自己收集一组数据,然后进行数据可视化,并且对数据进行分析
  • 对此,有多种解决方案,纠结一会后,最终我选择echars!
  • 毕竟对我来说,echars快捷简单,并且还可以动!🚀泰裤辣!!!
方案利处弊端改进建议
echarts组件库

1. 功能强大,支持多种图表类型;

2. 可以灵活定制图表风格;

3. 支持数据动态更新和响应式布局。

1. 对初学者来说,上手难度较大;

2. 部分高级功能需要付费使用。

1. 提供更详细的文档和教程;

2. 增加更多示例代码和模板;

3. 开源或者免费提供更多高级功能。

PPT等其他软件工具

1. 操作简单,易于上手;

2. 可以添加文字、图片、动画等多种元素;

3. 可以输出为PPT或PDF等格式。

1. 功能不够专业化,无法满足一些高级需求;

2. 交互性较差,难以实现数据动态更新。

1. 加入更多专业化图表类型;

2. 支持更多数据源和自动化更新机制;

3. 优化图表样式和动画效果。

Flourish等在线数据可视化平台

1. 操作简单,无需编写代码;

2. 提供多种模板和图表类型;

3. 支持数据导入和自动更新。

1. 功能有限,定制化程度不高;

2. 部分高级功能需要付费使用;

3. 数据安全性存在隐患。

1. 加入更多自定义功能和插件支持;

2. 提高数据安全性和稳定性;

3. 开源或者免费提供更多高级功能。

 

2、解决方案

2.1、echars(前端等组件库)

效果图

 代码分享:

数据可视化作业.zip - 蓝奏云文件大小:629.1 K|https://wwwf.lanzout.com/i8c100xy3yni

2.2、PPT等其他软件工具

 可以做,但是没必要,而且要做一个数据大屏,还是挺浪费时间的!

2.3、使用flourish等在线数据可视化制作平台

 软考备考记录_哔哩哔哩_bilibili竞赛题在线制作网站:https://app.flourish.studio(真好用!还可以用来水个作业bushi)本视频在线预览:https://public.flourish.studio/visualisation/13931917/ ps:准备使用Python的bar_chart_race 生成动态条形图的,但是好多数据都不兼容唉,搞了1小时都没有调整好...(大哭.jpg), 视频播放量 209、弹幕量 0、点赞数 2、投硬币枚数 0、收藏人数 0、转发人数 3, 视频作者 电石QwQ, 作者简介 不甘寂寞,相关视频:23上半年软考泄题总结,为什么都劝穷人家孩子学计算机而不是其他专业?句句戳心!别再执迷不悟了!!!,2023软考泄题,大学期间计算机专业最值得拿的五个含金量高的证书,保研加分,面试求职快人一步!,科软学长带你划重点(408计组王道书),盲目自学计算机的惨痛教训,句句戳心,别再执迷不悟了,2023上半年中级软件设计师下午估分(转载至我神zst_2001的答案),我摊牌了,我就是这样上岸了,6个月备考公务员,附计划表,443分第一上岸南大:政治经验分享&备考心得,【全364集】赶紧安排上!火遍B站的【网络工程师】大佬带你恶补网工入门到进阶必学课程,收藏起来慢慢学!网工入门_华为认证_HCIA_HCIP_网工学习路线https://www.bilibili.com/video/BV1Xz4y1i7T3

 效果挺好

2.4、自己用代码实现

比较麻烦(数据容易不匹配)

import pandas as pd
import matplotlib.pyplot as plt
import os
import imageio

# 读取 Excel 文件
df = pd.read_excel('schedule.xlsx')

# 提取耗时数据列
columns = ['睡觉', '吃饭', '娱乐', '学习英语', '准备软考']
values = df[columns].values

# 创建竞赛动态条形图的每一帧
frames = []
for i in range(len(df)):
    # 创建 Matplotlib Figure 对象
    fig, ax = plt.subplots(figsize=(6, 3.5))

    # 绘制当前行的数据
    bar = ax.bar(columns, values[i], color=['gray', 'red', 'blue', 'green', 'orange'])

    # 在每一个条形上添加文字标签
    for rect in bar:
        height = rect.get_height()
        ax.annotate(f'{height:.1f}', xy=(rect.get_x() + rect.get_width() / 2, height), xytext=(0, 3),
                    textcoords='offset points', ha='center', va='bottom', fontsize=8)

    # 隐藏 X 轴的标签和刻度线
    ax.set_xticklabels([])
    ax.tick_params(axis='x', length=0)

    # 设置 Y 轴的范围
    ax.set_ylim(0, 10)
    ax.set_ylabel('Time (h)')

    # 设置图表的标题
    date = pd.Timestamp(df.loc[i, '日期']).strftime('%Y-%m-%d')
    ax.set_title(f'Daily Schedule: {date}')

    # 将当前帧转换为 PIL Image 对象
    fig.tight_layout()
    fig.canvas.draw()
    pil_image = plt.gcf().canvas.buffer_rgba()

    # 将 PIL Image 对象添加到帧列表中
    frames.append(pil_image)

    # 清空 Matplotlib Figure 对象以便下一次使用
    plt.cla()

# 使用 imageio 库将帧列表保存为 GIF 动态图
imageio.mimsave('schedule.gif', frames, 'GIF', duration=0.5)

# 删除生成的临时 PNG 文件
os.system('del temp_*.png')

好看的echars——雷达图

option = {
  backgroundColor: '#000',
  radar: {
    center: ['50%', '50%'],
    radius: '85%',
    name: {
      textStyle: {
        color: '#fff',
        fontSize: 12,
        fontFamily: 'PingFangSC-Regular, PingFang SC;',
        // fontWeight: "500",
      },
    },
    axisLine: {
      lineStyle: {
        color: '#013A3F',
      },
    },
    indicator: [
      { name: '资产负债率', max: 6500 },
      { name: '利息保障倍数', max: 6000 },
      { name: '长期负债比率', max: 30000 },
      { name: '现金流量比率', max: 38000 },
      { name: '现金比率', max: 52000 },
      { name: '速动比率', max: 52000 },
      { name: '流动比率', max: 52000 },
      { name: '产权比率', max: 52000 },
    ],
    splitArea: {
      show: false,
      areaStyle: {
        color: 'rgba(255,0,0,0)',
      },
    },
    splitLine: {
      show: true,
      lineStyle: {
        width: 1,
        color: '#01424C',
      },
    },
  },
  series: [
    {
      name: '成绩单',
      type: 'radar',
      data: [
        {
          value: [4200, 3000, 20000, 35000, 50000, 18000, 50000, 18000],
          symbol: 'none',
          areaStyle: { color: 'rgba(71,237,252,.3)' },
          lineStyle: {
            color: '#47EDFC',
            width: 1,
          },
          label: {
            show: true,
            formatter: function (params) {
              return params.value;
            },
          },
        },
        
      ],
      //流动光效配置
      effect: true,
      showEffectOn: 'render',
      rippleEffect: {
        brushType: 'stroke',
        scale: 2.5,
      },
      //提示框配置
      tooltip: {
        trigger: 'item',
      },
    },
    {
        type: 'graphic',
        // 设定层级
        zlevel: 1000,
        elements: [{
            type: 'circle',
            shape: {
                r: 20
            },
            style: {
                fill: '#fff',
                stroke: '#47EDFC',
                lineWidth: 3
            },
            position: ['50%', '50%'],
            // 表示图案从 0 到 1 循环播放
            // duration 指定了每次循环所需时间
            // delay 表示初始化时需要等待的时间,由于要在雷达图基础上添加效果,可以适当调高延迟时长
            // repeatDelay 表示每次播放完成后需要等待的时间
            // repeat 表示动效需要播放的次数,0 表示无限循环
            // easing 表示动效缓动函数,linear 就是线性变化,无需使用其他函数
            // scale 表示动效所需的缩放数值,表示图案从 0 到 scale 缩放
            // opacity 表示图形不透明度变化,表示图案从 0 到 opacity 的不透明度变化
            // 如果 scale 与 opacity 都为 0,则意味着这个动效的展示方式是完全消失,这里 scale 设定为 1,opacity 设定为 0.8
            // 然后将 duration 设定为一个适中的值,这里就设定为 2000ms,每次循环完成后需要延迟 1000ms
            // 最后在 graphic 组件的元素中加入 text,设置好显示的 text,如果不需要只需要删去即可
            // 需要注意:由于我们让整个 graphic 组件的 zlevel 设定为 1000,因此 text 显示在页面最顶层上。
            animation: 'scale',
            left: 0,
            right: 0,
            top: 0,
            bottom: 0,
            duration: 2000,
            delay: 2000,
            repeatDelay: 1000,
            repeat: 0,
            easing: 'linear',
            scale: 1,
            opacity: 0.8,
            style: {
                text: 'Hello World!',
                textAlign: 'center',
                textVerticalAlign: 'middle',
                textFont: 'bold 30px Microsoft YaHei',
                fill: '#47EDFC',
            }
        }]
    }
  ],

};

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

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

相关文章

QListWidget和QListView的使用和item点击事件

QListWidget和QListView很常用,但是使用上功能类似,往往容易分不清区别,但是不知道如何选择。这里总结下二者之间的区别和使用,分享给有需要的人,有需要的可点击收藏。 QListView介绍 QListView是Qt中用于显示列表的一…

程序在内存中的分布

1. 具体分布细节由编译器决定 2. 分布图 3. 静态局部变量通常被存放在程序的.data段中。 一般地,静态局部变量定义在函数体内,在函数执行时,它会在静态存储区分配内存,并且只被初始化一次。因为静态局部变量是在编译阶段产生的&…

SpringCloud GateWay 学习

SpringCloud GateWay 文章目录 SpringCloud GateWay1 Gateway 介绍2 代码实现 1 Gateway 介绍 有一个前后端分离项目,分析如图 使用网关服务Gateway,重构项目架构 Gateway 是在 Spring 生态系统之上构建的 API 网关服务,基于 Spring &#x…

DES,RAS,HASH

是猫咪,我加入了一些猫咪 1.DES Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法。设计中使用了分组密码设计的两个原则:混淆(confusion)和扩散(diffusion)。DES加密算法原理简析_51…

秋招笔试零基础怎么办?自顶向下真题学习法,这样准备就稳啦!

秋招笔试零基础怎么办?自顶向下真题学习法,这样准备就稳啦 秋招临近,是时候提前准备笔试了。想必各位都忙着刷穿leetcode的剑指Offer,或者牛客的往年真题等等 但你真的了解自己的算法知识板块哪里有纰漏吗? 你知道今…

【C++】初识STL

目录 🌞专栏导读 🌛什么是STL 🌛STL的版本 🌛STL的六大组件 🌛STL的重要性 🌛STL的缺陷 🌞专栏导读 🌟作者简介:日出等日落,在读本科生一枚&#xff0…

nginx网站安装服务

nginx概述 一款高性能、轻量级web服务软件稳定性高系统资源消耗低对HTTP并发连接的处理能力高单台物理服务器可支持30000~50000个并发请求 正向代理:通过代理服务器来访问资源,这种代理服务成为正向代理 反向代理:客户端与代理是无感知的&…

【Go LeetDay】总目录(1~83)

Leetcode Golang Day1~10 Golang每日一练(leetDay0001) 1. 两数之和 Two Sum 2. 两数相加 Add Two Numbers 3. 无重复字符的最长子串 Longest-substring-without-repeating-characters Golang每日一练(leetDay0002) 4. 寻找两个正序数组的中位数 Median of two sorted arra…

如何通过帮助文档来减少你的客服咨询量,提高工作效率

相信你的公司网站或者产品中总会设置一个“联系我们”按钮,让客户能够遇到问题随时能够找到客服人员并且快速解决,在创业初期,可能这样的模式没有问题,但是随着客户越来越多,客服的需求也随之增加,客服人员…

【iOS】--对象的底层结构

源码 先转一下源码 //#import <Foundation/Foundation.h> #import <objc/runtime.h>interface LGPerson : NSObject property (nonatomic, strong) NSString *KCName; endimplementation LGPersonendint main(int argc, const char * argv[]) {autoreleasepool {…

DVWA-XSS (Stored) Low/Medium/High低中高级别

「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 XSS Stroed 一、Low级别二、Medium级别三、Hign级别 这关是一个论坛功能&#xff0c;把用…

设计模式(六):结构型之代理模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二、三)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(四)&#xff1a;创建型之原型模式 设计模式(五)&#xff1a;创建型之建造者模式 设计模式(六)&#xff1a;结构型之代理模式 目录 一、…

深入分析——Linux DMA Fence

目录 一 简介 二 基本原理 三 代码实现 3.1 Init 3.2 wait 3.3 signaling 3.4 callback 3.5 signaled 3.6 signal 3.7 refcount & release 四 Fence Status 一 简介 dma-fence是linux 内核中同步原语&#xff0c;它只有两种状态signaled和unsigned。因为其本身的…

华为OD机试之找出经过特定点的路径长度(Java源码)

找出经过特定点的路径长度 题目描述 无 输入描述 输入一个字符串&#xff0c;都是以大写字母组成&#xff0c;每个相邻的距离是 1&#xff0c; 第二行输入一个字符串&#xff0c;表示必过的点。 说明每个点可过多次。 输出描述 经过这些必过点的最小距离是多少 用例 输入 ANT…

OpenGL之坐标系统

文章目录 概述局部空间世界空间观察空间裁剪空间正射投影透视投影 进入3D代码 OpenGL希望在每次顶点着色器运行后&#xff0c;我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说&#xff0c;每个顶点的x&#xff0c;y&#xff0c;z坐标都应该…

基于diffusers训练lora,AI换装

阿里云登录 - 欢迎登录阿里云&#xff0c;安全稳定的云计算服务平台欢迎登录阿里云&#xff0c;全球领先的云计算及人工智能科技公司&#xff0c;阿里云为200多个国家和地区的企业、开发者和政府机构提供云计算基础服务及解决方案。阿里云云计算、安全、大数据、人工智能、企业…

设计模式(四):创建型之建造者模式

设计模式系列文章 设计模式(一)&#xff1a;创建型之单例模式 设计模式(二)&#xff1a;创建型之工厂方法和抽象工厂模式 设计模式(三)&#xff1a;创建型之原型模式 设计模式(四)&#xff1a;创建型之建造者模式 目录 一、设计模式分类二、建造者模式1、概述2、结构3、实例…

Win10设置 Java 环境变量

文章目录 概要下载jdk安装jdk配置环境变量测试环境变量是否配置成功总结 概要 学习java开发首先需要安装jdk,并设置环境变量。 接下来就来介绍一下如何在 windows 10 系统中配置java环境变量 下载jdk https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe…

C#,生信软件实践(06)——DNA数据库GenBank文件的详解介绍及解释器之完整C#源代码

1 GenBank 1.1 NCBI——美国国家生物技术信息中心&#xff08;美国国立生物技术信息中心&#xff09; NCBI&#xff08;美国国立生物技术信息中心&#xff09;是在NIH的国立医学图书馆&#xff08;NLM&#xff09;的一个分支。它的使命包括四项任务&#xff1a;1. 建立关于分…

LIBEVENT 框架

LIBEVENT 框架 LAMPlibevent特点:libevent的功能libevent官网安装步骤Linux下libevent主要API介绍libevent使用步骤libevent 编程案例LAMP 从LAMP说起: 是一个缩写,它指一组通常一起使用来运行动态网站或者服务器的自由软件 Linux - 操作系统Apache - 网页服务器MySQL - 数据…