码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 数据可视化——使用echars图表展示


    目录

    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、自己用代码实现

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

    1. import pandas as pd
    2. import matplotlib.pyplot as plt
    3. import os
    4. import imageio
    5. # 读取 Excel 文件
    6. df = pd.read_excel('schedule.xlsx')
    7. # 提取耗时数据列
    8. columns = ['睡觉', '吃饭', '娱乐', '学习英语', '准备软考']
    9. values = df[columns].values
    10. # 创建竞赛动态条形图的每一帧
    11. frames = []
    12. for i in range(len(df)):
    13. # 创建 Matplotlib Figure 对象
    14. fig, ax = plt.subplots(figsize=(6, 3.5))
    15. # 绘制当前行的数据
    16. bar = ax.bar(columns, values[i], color=['gray', 'red', 'blue', 'green', 'orange'])
    17. # 在每一个条形上添加文字标签
    18. for rect in bar:
    19. height = rect.get_height()
    20. ax.annotate(f'{height:.1f}', xy=(rect.get_x() + rect.get_width() / 2, height), xytext=(0, 3),
    21. textcoords='offset points', ha='center', va='bottom', fontsize=8)
    22. # 隐藏 X 轴的标签和刻度线
    23. ax.set_xticklabels([])
    24. ax.tick_params(axis='x', length=0)
    25. # 设置 Y 轴的范围
    26. ax.set_ylim(0, 10)
    27. ax.set_ylabel('Time (h)')
    28. # 设置图表的标题
    29. date = pd.Timestamp(df.loc[i, '日期']).strftime('%Y-%m-%d')
    30. ax.set_title(f'Daily Schedule: {date}')
    31. # 将当前帧转换为 PIL Image 对象
    32. fig.tight_layout()
    33. fig.canvas.draw()
    34. pil_image = plt.gcf().canvas.buffer_rgba()
    35. # 将 PIL Image 对象添加到帧列表中
    36. frames.append(pil_image)
    37. # 清空 Matplotlib Figure 对象以便下一次使用
    38. plt.cla()
    39. # 使用 imageio 库将帧列表保存为 GIF 动态图
    40. imageio.mimsave('schedule.gif', frames, 'GIF', duration=0.5)
    41. # 删除生成的临时 PNG 文件
    42. os.system('del temp_*.png')

    好看的echars——雷达图

    1. option = {
    2. backgroundColor: '#000',
    3. radar: {
    4. center: ['50%', '50%'],
    5. radius: '85%',
    6. name: {
    7. textStyle: {
    8. color: '#fff',
    9. fontSize: 12,
    10. fontFamily: 'PingFangSC-Regular, PingFang SC;',
    11. // fontWeight: "500",
    12. },
    13. },
    14. axisLine: {
    15. lineStyle: {
    16. color: '#013A3F',
    17. },
    18. },
    19. indicator: [
    20. { name: '资产负债率', max: 6500 },
    21. { name: '利息保障倍数', max: 6000 },
    22. { name: '长期负债比率', max: 30000 },
    23. { name: '现金流量比率', max: 38000 },
    24. { name: '现金比率', max: 52000 },
    25. { name: '速动比率', max: 52000 },
    26. { name: '流动比率', max: 52000 },
    27. { name: '产权比率', max: 52000 },
    28. ],
    29. splitArea: {
    30. show: false,
    31. areaStyle: {
    32. color: 'rgba(255,0,0,0)',
    33. },
    34. },
    35. splitLine: {
    36. show: true,
    37. lineStyle: {
    38. width: 1,
    39. color: '#01424C',
    40. },
    41. },
    42. },
    43. series: [
    44. {
    45. name: '成绩单',
    46. type: 'radar',
    47. data: [
    48. {
    49. value: [4200, 3000, 20000, 35000, 50000, 18000, 50000, 18000],
    50. symbol: 'none',
    51. areaStyle: { color: 'rgba(71,237,252,.3)' },
    52. lineStyle: {
    53. color: '#47EDFC',
    54. width: 1,
    55. },
    56. label: {
    57. show: true,
    58. formatter: function (params) {
    59. return params.value;
    60. },
    61. },
    62. },
    63. ],
    64. //流动光效配置
    65. effect: true,
    66. showEffectOn: 'render',
    67. rippleEffect: {
    68. brushType: 'stroke',
    69. scale: 2.5,
    70. },
    71. //提示框配置
    72. tooltip: {
    73. trigger: 'item',
    74. },
    75. },
    76. {
    77. type: 'graphic',
    78. // 设定层级
    79. zlevel: 1000,
    80. elements: [{
    81. type: 'circle',
    82. shape: {
    83. r: 20
    84. },
    85. style: {
    86. fill: '#fff',
    87. stroke: '#47EDFC',
    88. lineWidth: 3
    89. },
    90. position: ['50%', '50%'],
    91. // 表示图案从 0 到 1 循环播放
    92. // duration 指定了每次循环所需时间
    93. // delay 表示初始化时需要等待的时间,由于要在雷达图基础上添加效果,可以适当调高延迟时长
    94. // repeatDelay 表示每次播放完成后需要等待的时间
    95. // repeat 表示动效需要播放的次数,0 表示无限循环
    96. // easing 表示动效缓动函数,linear 就是线性变化,无需使用其他函数
    97. // scale 表示动效所需的缩放数值,表示图案从 0 到 scale 缩放
    98. // opacity 表示图形不透明度变化,表示图案从 0 到 opacity 的不透明度变化
    99. // 如果 scale 与 opacity 都为 0,则意味着这个动效的展示方式是完全消失,这里 scale 设定为 1,opacity 设定为 0.8
    100. // 然后将 duration 设定为一个适中的值,这里就设定为 2000ms,每次循环完成后需要延迟 1000ms
    101. // 最后在 graphic 组件的元素中加入 text,设置好显示的 text,如果不需要只需要删去即可
    102. // 需要注意:由于我们让整个 graphic 组件的 zlevel 设定为 1000,因此 text 显示在页面最顶层上。
    103. animation: 'scale',
    104. left: 0,
    105. right: 0,
    106. top: 0,
    107. bottom: 0,
    108. duration: 2000,
    109. delay: 2000,
    110. repeatDelay: 1000,
    111. repeat: 0,
    112. easing: 'linear',
    113. scale: 1,
    114. opacity: 0.8,
    115. style: {
    116. text: 'Hello World!',
    117. textAlign: 'center',
    118. textVerticalAlign: 'middle',
    119. textFont: 'bold 30px Microsoft YaHei',
    120. fill: '#47EDFC',
    121. }
    122. }]
    123. }
    124. ],
    125. };
  • 相关阅读:
    sh脚本 单独可以执行,放到crontab中不执行(定时清空redis)
    在vue3中通过vue-i18n实现国际化多语言切换
    ER 图与数据字典 – 哪个更适合记录数据模型
    Nginx做反向代理时,对绝对路径的处理
    Cave Cows 3
    ES6 入门教程 19 Generator 函数的语法 19.8 作为对象属性的 Generator 函数 & 19.9 Generator 函数的this
    Postman接口测试工具详解
    基础在线:如何搭建docker环境完整教程和镜像设置
    深度学习的历史
    阿赵的Unity可视化Shader工具ASE介绍目录
  • 原文地址:https://blog.csdn.net/Pan_peter/article/details/130997235
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号