(前端)使用Apache ECharts绘制可视化图表

本篇文章给大家分享一个前端绘图利器:Apache ECharts。

1、Apache ECharts简介

Apache ECharts是一个基于JavaScript的开源数据可视化图表库,最初由百度团队开发,于2018年初捐赠给Apache基金会,2021年1月26日晚,Apache基金会官方宣布 ECharts项目正式毕业,成为Apache顶级项目。

Apache ECharts可完成多种2D或3D前端图表的绘制,包括数据折线图、柱状图、饼图、坐标图、热力图等,具有着丰富的可视化类型,绚丽的特效等(最主要是完全免费,还很好用),对于前端程序员绘制前端数据图表非常有帮助。


2、ECharts的使用

Apache ECharts的使用主要由以下几个步骤构成:

2.1、引入echarts.js文件

<script src="../static/js/echarts.min.js"></script>

 echarts.js文件的下载方法:

(1)进入ECharts官网:Apache ECharts

(2)点击进入下载界面:

(3)下载方式:

(3.1)方法一:github下载(点击dist进入github进行下载)

(3.2)方法二:从npm安装(这个方法博主没试过,大家可以自己去试一下)

(3.3)方法三:定制下载

2.2、 准备一个盒子模型,定义好宽高,最终的图表就在这个盒子中呈现

<div style="width:500px; height: 500px;" id="main"></div>

2.3、获取定义的盒子模型元素并实例化echarts对象

var myChart = echarts.init(document.querySelector('#main'));

2.4、设置相应图表配置项(这里以折线图为例)

(1)点击示例进入界面后选择折线图

这里将上面JS语言的配置项代码进行配置后就会在对应盒子中显示上图右方的折线图。 


3、使用示例

注意:此示例绘制的是动态折线图,绘制动态图表需要引入jquery文件,文件下载可参考此文章:【精选】jquery下载所有版本(实时更新)_jquery.min.js最新版本_xsqsharp的博客-CSDN博客

示例代码如下(以动态折线图为例) 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>echarts绘制动态折线图</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        div {
            width: 80%;
            height: 80vh;
            margin: 50px auto;
            background-color: #dbdbdb;
        }
    </style>
</head>

<body>
    <div id="main"></div>

    <!-- 引入echarts.min.js和jquery-3.5.1.min.js文件 -->
    <script src="./echarts.min.js"></script>
    <script src="./jquery-3.5.1.min.js"></script>
    <script>
        // 定义两个空数组用于存储x轴与y轴数据
        var y_data = [];
        var x_data = [];

        function lineChart(x_value, y_value) {
            y_data.push(y_value);
            x_data.push(x_value);
            // 当x轴数据长度大于8时,折线图向左移动
            if (x_data.length > 8) {
                x_data.shift();
                y_data.splice(0, 1);
            }
            // 实例化echarts对象
            var myChart = echarts.init(document.querySelector('#main'));
            // 设定配置项
            var option = {
                title: {
                    text: '折线图',
                    textStyle: {
                        left: 'center',
                        fontSize: 16,
                        fontFamily: 'Poppins'
                    }
                },
                xAxis: {
                    data: x_data
                },
                yAxis: {
                    // y轴刻度最小与最大值
                    min: 40,
                    max: 100,
                    splitNumber: 5
                },
                series: [
                    {
                        data: y_data,
                        type: 'line',
                        label: {
                            show: true,
                            position: 'top',
                            textStyle: {
                                fontSize: 14
                            }
                        },
                        lineStyle: {
                            color: 'green'
                        },
                        // 折线拐点颜色
                        itemStyle: {
                            color: "red"
                        }
                    }
                ],
                // 图表相对于整个容器的定位
                grid: {
                    top: "30px",
                    left: "30px",
                    right: "10px",
                    bottom: "20px"
                }
            };
            myChart.setOption(option);
        }

        // 生成指定范围内的随机整数
        function getRandomNumber(min, max) {
            // 得到范围内的一个随机数
            let random = Math.random() * (max - min + 1) + min;
            // 向下取整
            let randomNumber = Math.floor(random);
            return randomNumber;
        }

        // 横、纵坐标值
        var x_value = 0;
        var y_value;

        // 数据动态更新
        function refresh(min, max, fun) {
            // 生成随机整数
            y_value = getRandomNumber(min, max);
            // 调用函数,绘制折线图
            fun(x_value, y_value);
            x_value = x_value + 1;
            // 设置一个定时器,每隔一秒调用一次refresh()函数
            setTimeout(() => {
                refresh(min, max, fun);
            }, 1000)
        }

        refresh(50, 90, lineChart);
    </script>
</body>

</html>

上述代码运行结果如下所示:

OK,以上就是本次文章的全部内容,大家可根据自己的需要去绘制相应图表,感谢大家的阅读!

  • 13
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于Flask的Python全国招聘岗位就业可视化系统源码+项目说明.zip ## **1 开发环境** - [x] 1 系统:Window 10 家庭中文版。 - [x] 2 语言:Python(3.8.5)、MySQL(5.5)。 - [x] 3 Python所需的库:flask、pymysql、pandas、numpy、time、datetime、requests、etree、jieba、re、json、decimal(没有的话pip或conda安装一下~)。 - [x] 4 编辑器:jupyter Lab(jupyter notebook)、Pycharm(主用)、Navicat。 ## **2 运行说明** 本项目下面有五个.py的文件,下面分别阐述各个文件所对应的功能:<br> - [x] 1 data_collection:分别从前程无忧网站和猎聘网上以关键词`job_name`爬取相关数据。其中,前程无忧爬取的数据主要用来进行相关图表绘制;而猎聘网上主要为岗位要求文本数据,这部分进行词云的可视化展示。 - [x] 2 data_clean:对爬取到的数据进行清洗,包括去重去缺失值、变量重编码、特征字段创造、文本分词等。 - [x] 3 data_store:将清洗后的数据全部储存到`MySQL`中,其中对文本数据使用`jieba.analyse`下的`extract_tags`来获取文本中的关键词和权重大小,方便绘制词云。 - [x] 4 utils:大多为app调用MySQL数据库中的工具类函数;同时,里面也有引用data_collection、data_clean、data_store等函数,我们也主要使用该工具类进行岗位数据的爬取、清洗和存储。 - [x] 5 app:使用`Python`一个小型轻量的`Flask`框架来进行`Web`可视化系统的搭建,在static中有css和js文件,js中大多为百度开源的[ECharts](https://echarts.apache.org/examples/zh/index.html),再通过自定义`controller.js`来使用ajax调用flask已设定好的路由,将数据异步刷新到templates下的`main.html`中。 - [x] 6 如何运行:先运行utils,提前进行数据采集、数据清洗、数据存储操作,之后更改app修改好`datatable`和`job_name`,这部分信息务必与utils中输入的保持一致(因为发现app一运行的话就会直接给出网页,所以没法在控制台上同步将变量赋值过去*_*)。 - [x] 7 温馨提示:由于我在数据采集部分使用了一个用redis搭建的代理IP池,所以一开始运行的话需要将里面的proxies删掉,使用time.sleep即可(使用代理池能防止被封IP,同时可以更快爬取数据,实现可视化操作)。 ## **3 你将会学到** - [x] 1 Python爬虫:盗亦有道,掌握requests和xpath的相关用法。 - [x] 2 数据清洗:能详细知道项目中数据预处理的步骤,包括去重去缺失值、变量重编码、特征字段创造和文本数据预处理,玩转pandas、numpy相关用法。 - [x] 3 数据库知识:select、insert等操作,掌握pymysql相关用法。 - [x] 4 前后端知识:了解到HTML、JQuery、JavaScript、Ajax的相关用法。 - [x] 5 Flask知识:能快速建立起一个轻量级的Web框架,利用Python实现前后端交互。 ......
【资源说明】 基于Flask的Python全国招聘岗位就业可视化系统源码+项目部署说明+详细注释.zip 1、该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 1 开发环境** * 1 系统:Window 10 家庭中文版。 * 2 语言:Python(3.8.5)、MySQL(5.5)。 * 3 Python所需的库:flask、pymysql、pandas、numpy、time、datetime、requests、etree、jieba、re、json、decimal(没有的话pip或conda安装一下~)。 * 4 编辑器:jupyter Lab(jupyter notebook)、Pycharm(主用)、Navicat。 2 运行说明** 本项目下面有五个.py的文件,下面分别阐述各个文件所对应的功能:<br> * 1 data_collection:分别从前程无忧网站和猎聘网上以关键词`job_name`爬取相关数据。其中,前程无忧爬取的数据主要用来进行相关图表绘制;而猎聘网上主要为岗位要求文本数据,这部分进行词云的可视化展示。 * 2 data_clean:对爬取到的数据进行清洗,包括去重去缺失值、变量重编码、特征字段创造、文本分词等。 * 3 data_store:将清洗后的数据全部储存到`MySQL`中,其中对文本数据使用`jieba.analyse`下的`extract_tags`来获取文本中的关键词和权重大小,方便绘制词云。 * 4 utils:大多为app调用MySQL数据库中的工具类函数;同时,里面也有引用data_collection、data_clean、data_store等函数,我们也主要使用该工具类进行岗位数据的爬取、清洗和存储。 * 5 app:使用`Python`一个小型轻量的`Flask`框架来进行`Web`可视化系统的搭建,在static中有css和js文件,js中大多为百度开源的[ECharts](https://echarts.apache.org/examples/zh/index.html),再通过自定义`controller.js`来使用ajax调用flask已设定好的路由,将数据异步刷新到templates下的`main.html`中。 * 6 如何运行:先运行utils,提前进行数据采集、数据清洗、数据存储操作,之后更改app修改好`datatable`和`job_name`,这部分信息务必与utils中输入的保持一致(因为发现app一运行的话就会直接给出网页,所以没法在控制台上同步将变量赋值过去*_*)。 * 7 温馨提示:由于我在数据采集部分使用了一个用redis搭建的代理IP池,所以一开始运行的话需要将里面的proxies删掉,使用time.sleep即可(使用代理池能防止被封IP,同时可以更快爬取数据,实现可视化操作)。 3 你将会学到** * 1 Python爬虫:盗亦有道,掌握requests和xpath的相关用法。 * 2 数据清洗:能详细知道项目中数据预处理的步骤,包括去重去缺失值、变量重编码、特征字段创造和文本数据预处理,玩转pandas、numpy相关用法。 * 3 数据库知识:select、insert等操作,掌握pymysql相关用法。 * 4 前后端知识:了解到HTML、JQuery、JavaScript、Ajax的相关用法。 * 5 Flask知识:能快速建立起一个轻量级的Web框架,利用Python实现前后端交互。
xrkmonitor字符云监控系统 更新日志: v3.4 该版本主要引入了插件实时表格和监控系统实时网络拓扑图,插件实时表格用于展示插件监控指标的实时状态以及在分布式系统中指标数据在不同机器间的实时对比排序。修改点如下: 1、首页网络拓扑图绘制,以监控系统为中心绘制机器到监控系统的网络拓扑 2、插件实时表格功能,主要用于实时展示监控指标在分布式机群不同机器间的对比排序xrkmonitor字符云监控系统是一个国产开源监控系统,专注于通过监控系统对软硬件系统进行掌控以及系统相关数据的可视化,通过插件化进制完成对通用项目监控的复用,支持多种开发语言开发接口以便能为各类语言开发者所用,支持在线部署。xrkmonitor字符云监控系统特色1、IP地址库: 支持通过IP地址上报时将IP地址转为物理地址,相同物理地址归并展示一个监控API 即可轻松生成监控数据的物理地址分布图,插件示例:monitor_apache_log 2、监控插件市场: 让监控成为可以复用的组件,更多监控插件持续开发中 3、分布式日志系统: 支持大规模系统日志上报,日志上报支持频率限制、日志染色、自定义字段等高级功能,控制台日志查看支持按关键字、排除关键字、上报时间、上报机器等方式过滤日志,从茫茫日志中轻松找到您需要的日志。 4、视图机制: 监控图表支持视图定制模式,视图可按上报服务器、监控点随意组合,轻松定制您需要的监控视图,并可在监控图表上直接设置告警值。 5、告警集成: 集成告警功能, 支持邮件、短信、微信、PC客户端等告警方式,告警功能无需开发直接可用xrkmonitor字符云监控系统优势支持插件功能, 监控插件无需开发,自由选择监控插件,安装即可使用 集成告警功能, 支持多种告警方式 集成分布式日志系统功能 支持多种部署方式 a.集中部署(全部服务部署在一台机器,适合个人或者小团队开发者) b.分布式部署(分布式部署在多台机器,适合小中型企业大规模监控需求) 支持自动化配置(机器部署agent后自动注册到监控系统无需在控制台配置、视图根据上报自动绑定相关上报机器) 支持多用户访问(子账号由管理员账号在控制台添加) 上报接口支持主流开发语言,数据上报api 提供类似公共库接口的便捷 在线部署 安装脚本: install.sh 从以下链接下载后, 按提示执行即可, 需要系统支持 bashxrkmonitor字符云监控系统在线部署说明 安装脚本会先检查当前系统是否支持在线安装, 如不支持您可以下载源码后在系统上编译安装 在线部署目前只支持集中部署方式, 即所有服务部署在一台机器上, 该机器上需要安装 mysql/apache 安装脚本使用中文 utf8 编码, 安装过程请将您的终端设置为 utf8, 以免出现乱码 安装脚本同时支持 root 账号和普通账号操作, 使用普通账号执行安装部署要求如下:在线部署使用动态链接库, 需要在指定目录下执行安装脚本, 目录为: /home/mtreport 普通账号某些目录可能无权操作, 需要授权才能正常安装 卸载脚本: uninstall_xrkmonitor.sh 在线部署过程中会下载该脚本, 如需卸载可执行该脚本 我们强烈建议您先在本地虚拟机上执行在线安装, 熟悉安装流程后在实际部署到您的服务器上。 一分钟完成在线部署操作示意:(所选系统为:opensuse 42.3)使用的技术方案 1、apache + mysql(监控点数据、配置信息使用 mysql 存储, 支持分布式部署) 2、前端 web 控制台采用 dwz 开源框架 3、前端监控图表采用开源 echarts 绘制 4、后台 cgi 使用开源的cgi模板引擎 - clearsilver, 所有cgi支持以fastcgi方式部署 5、后台服务使用了开源的 socket 开发框架 - C++ Socketsxrkmonitor字符云监控系统截图
一、课程设计背景 随着数据时代的到来,数据可视化已经成为了数据分析的重要手段。在数据可视化方面,Echarts是一款非常流行的图表库,而Flask是一个轻量级的Web框架,两者结合可以快速构建一个可视化系统。 二、课程设计目标 本课程设计的目标是让学生掌握使用Flask+Echarts构建可视化系统的基本思路和方法,包括: 1.掌握Flask的基本使用方法,能够搭建简单的Web应用。 2.了解Echarts的基本使用方法,能够绘制简单的图表。 3.掌握如何将Echarts嵌入到Flask中,实现数据可视化。 4.能够使用Python对数据进行处理和分析,并将分析结果可视化。 三、课程设计内容 1.Flask基础 1.1 Flask框架介绍 1.2 环境搭建 1.3 路由和视图函数 1.4 模板和静态文件 1.5 数据库和ORM 2.Echarts基础 2.1 Echarts简介 2.2 基本图表类型 2.3 数据格式 2.4 Echarts配置项 3.Flask+Echarts实战 3.1 数据准备 3.2 数据处理和分析 3.3 Echarts图表绘制 3.4 Flask+Echarts实现数据可视化 四、课程设计考核 1.完成一个基于Flask+Echarts的数据可视化系统。 2.使用Python对数据进行处理和分析,将分析结果可视化。 3.提交课程设计报告,包括系统设计、代码实现、运行效果截图等。 五、课程设计参考资料 1.Flask官方文档:https://flask.palletsprojects.com/en/1.1.x/ 2.Echarts官方文档:https://echarts.apache.org/zh/index.html 3.Python数据分析与可视化教程:https://www.jianshu.com/p/0f6a7d20a3a0

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值