手把手教你实现echarts3的折线图下钻drilldown功能系列篇二

article/2025/9/12 19:29:08

开场白

好了, 上一篇介绍了关于echarts下钻(drilldown)的一些信息,通过上一篇文章我们知道echarts折线图,柱状图没有支持下钻(drilldown)功能的api,那就需要我们自己动手,丰衣足食了。
这一篇我开始进行实质性的代码演示。你可以按照我的步骤一步一步来做,有什么疑问可以留言我。

欢迎大家访问我的github blog查看更多文章

一.效果贴图

为了避免枯燥无味,我先不贴代码,写贴上我的demo图,这里还会拿上一篇的那个demo图为例。

1.下钻(drilldown)前效果

图片描述

从图可以看出:这是展示2016年1月一直到2016年9月份的数据的折线图。

下钻(drilldown)开始:比如我点击2016年9月份(201609)的这个点,则应该显示一个属于2016年9月份下的每一天的一个折线图。

2.下钻(drilldown)后效果:

图片描述

从图可以看出:这是展示的从2016年9月份0901号开始直到0930号这30天的一个折线图。
完全符合我们的要求,对吧。

3.返回父级所在折线图

这里我提供了一个返回按钮,点击返回按钮后,会重新返回到父级的折线图:
图片描述

4.总结

  • 由这3张图我们能够看出一个标准的折线图下钻(drilldown)功能就出来了。
  • 那么,实现起来复杂了,其实也很简单。因为我们有万能的 setOption 函数。

不废话了,下面开始贴出详细的代码,准备好了吗?

注意:如果有对echarts的最基础的使用还不太了解的话,建议去 官网 看看api和教程之类的,我这里就不再对基础的只是进行赘述了。

二.折线图界面line-drill-down.html

<!DOCTYPE html>
<html style="height: 100%"><head><meta charset="utf-8"></head><body style="height: 100%; margin: 0"><div style="margin-left:40%;margin-top:2%"><button id='return-button' value=''>返回</button></div><div id="container" style="height: 50%;width: 50%"></div><script type="text/javascript" src="http://echarts.baidu.com/gallery/vendors/echarts/echarts-all-3.js"></script><script type="text/javascript" src="../jquery.js"></script><script type="text/javascript" src="./drillDown.js"></script><script type="text/javascript">var dom = document.getElementById("container");var myChart = echarts.init(dom);var option = drillDown.getOption(); //获取配置drillDown.initChart(myChart,option); // 初始化加载折线图,并显示出来// 点击返回按钮,会重新回到一.1的折线图$('#return-button').on('click',function(){var myChart = echarts.init(dom);var option = drillDown.getOption();drillDown.initChart(myChart,option);});</script></body>
</html>

代码解释:

  • 10行:在绘图前我们需要为 ECharts 准备一个具备高宽的 DOM 容器;
  • 13行:加载了一个drillDown.js文件,详细代码见下面的第三步;
  • 61,62行:基于准备好的dom,初始化echarts实例;
  • 63行:指定图表的配置项;
  • 64行:使用封装好的initChart方法为图表填充数据,并使用63行的配置项和64行的数据来显示图表.

这里都是echarts的基础知识,详细的可以点击这里进行充电。

三.drillDown.js代码

在这个js文件里我封装了几个方法:

  • getOption: 获取当前echart对象的配置数组,我就不再详细讲解了。
  • initChart: 初始化折线图,这个方法做了两件事:

    • 显示图表;
    • 为图表添加点击事件,也就是点击 返回按钮时触发的事件,详细逻辑看代码。

看代码:

var drillDown = {getOption : function () {var option = null;option = {title: {text: '折线图下钻(drilldown)示例',left: 'center'},tooltip: {trigger: 'item',formatter: '{a} <br/>{b} : {c}'},legend: {left: 'left',data: ['月数据']},xAxis: {type: 'category',name: 'x',splitLine: {show: false},data: ['201601', '201602', '201603', '201604', '201605', '201606', '201607', '201608', '201609']},......
};

由于代码篇幅过长,影响阅读性,我这里不详细贴出,大家可以从这里下载。

四.后台数据接口代码data.php

这里我写了伪代码,大家看一下应该就能够明白了:

<?php// 这里的接口代码伪代码大概如下:function getInterfaceData($month) {// 1.写查询语句,这里只是写伪代码,自己做防sql注入$sql =  "select ... from table where month = $month";// 2.连接数据库,查询结果为$data// 3.对查询的结果进行组装,返回json格式的数组$chartResult = [];// 4.取出x轴的值$chartResult['xAxis'] = $data['report_date'];// 5.为第一个series赋值,我们这里的demo只有一条折线$yAxisArr['yAxis'][0] = $data['data0'];// 如果有多条折线的情况下,可以这样写// $yAxisArr['yAxis'][5] = $data['data1'];// $yAxisArr['yAxis'][6] = $data['data2'];// 6.为y轴赋值$chartResult['yAxis'] = $yAxisArr;// 7.返回json格式的数据exit(json_encode($chartResult));}
?>

说明:

`data.php每一步我都有详细的注释,该方法主要是返回一个json格式的字符串,来供ajax回调使用。
客户端再拿到这个json字符串后,再进行拆分,分别给图表的x轴和y轴赋值即可。`

五.代码下载

图片描述

demo下载点击 这里。

六.总结

  • 好了,如果在第二部分中直接使用我模拟的测试数据的话,可以先不理会data.php的代码。
    直接打开line-drill-down.html运行即可测试;
  • 跑通后,需要与后台接口打通时,可以看一下data.php的一个思路,根据自己的业务写逻辑,然后再做测试即可;
  • 大家在测试的过程中有什么问题,可以跟我留言,我会在第一时间回复;
  • 码字不易,转载请注明出处。

最近结合hexo和github pages又搭建了一个新的博客,我会慢慢的将sae博客的文章逐渐迁移过去,欢迎大家访问。

欢迎大家访问我的新系列文章,主要是讲用最新版的express怎么去开发一个简单的blog.
目前已经更新两篇:手把手教你开发nodejs微博网站-开站篇
手把手教你开发nodejs微博网站-首页篇
最近在学习nodejs,欢迎大家在看过后踊跃拍砖。


http://chatgpt.dhexx.cn/article/WK0qm2dC.shtml

相关文章

Kibana:在 Kibana 中对数据进行深入分析 (drilldown)

我们可以在 Kibana 中对数据进行分析&#xff0c;并生产表格等。我们是否可以为我们展示的数据生产超链接呢&#xff1f;比如&#xff1a; 在我们上面的表格中在左边的表格中&#xff0c;上面所示的 US 是一个超链接。我们点击这个超链接后&#xff0c;它会帮我们启动一个搜索。…

Kibana:使用 drilldown 从一个仪表板切换到另外一个仪表板

Drilldowns&#xff08;也称为自定义操作&#xff09;使你可以配置工作流以对数据进行分析和故障排除。 使用 drilldowms&#xff0c;你可以从一个仪表板导航到另一个仪表板&#xff0c;并随身携带当前时间范围&#xff0c;过滤器和其他参数&#xff0c;因此上下文保持不变。 你…

Kibana:Drilldown 中的 URL 模板

警告&#xff1a;此功能处于 beta 版本&#xff0c;可能会更改。 该设计和代码不如正式的 GA 功能成熟&#xff0c;并且按原样提供&#xff0c;不提供任何担保。 Beta 功能不受官方 GA 功能的支持 SLA 约束。此功能在 7.11 及以上版本提供。 URL 模板 输入使用 Handlebars&…

highchart图表drilldown钻取功能及event点击事件添加(1)

最近做的一个需求是这样的&#xff0c;大类图表柱状图列出来&#xff0c;点击柱状图列出对应子类柱状图&#xff0c;后点击子类的柱状图后跳转到一个新页面列出两个饼状图 我是这么实现的&#xff1a;&#xff08;部分代码demo,饼状图页面为detailChart.html,随便找了个例子顶…

Kibana:为 table 创建链接 drilldown - 7.11 版本

在之前的文章 “Kibana&#xff1a;为 Dashboard 创建链接 drilldown - 7.11 版本”&#xff0c;我为大家介绍了如何使用带参数的 URL drilldown。在很多的时候&#xff0c;在 dashboard 中&#xff0c;有 table 的可视化。那么我们将如何为 table 中的项提供可视化呢&#xf…

下钻图生成 highcharts-column-drilldown

下钻图生成 highcharts-column-drilldown 功能 使用python生成下钻图 来源&#xff1a;https://www.highcharts.com.cn/demo/highcharts/column-drilldown 下钻层数由具体的输入决定&#xff0c;理论上可以无限下钻&#xff0c;不过下钻的层数越深也就意味着需要计算的时间越…

Kibana:为 Dashboard 创建链接 drilldown - 7.11 版本

我在之前的文章 “Kibana&#xff1a;使用 drilldown 从一个仪表板切换到另外一个仪表板” 展示了如何在 dashboard 里使用 drilldown 从一个仪表板到另外一个仪表板的跳转。在今天的文章中&#xff0c;我将介绍如何创建一个链接 drilldown 从而实现从 dashboard 到一个链接的跳…

终极玩转Power BI中Drill-down Choropleth 地图

故事背景 最近有个Power BI的项目有个功能点&#xff0c;颇令我头痛&#xff0c;说来话长&#xff0c;先捋一下需求&#xff1a; 1&#xff0c; 中国地图&#xff08;包含港澳台&#xff09; 2&#xff0c; 可以下钻到省市级&#xff0c;而且是中国->Region->Area->城…

C语言计算阶乘及阶乘的和

计算 n的阶乘。要实现这个阶乘的值并不难&#xff0c;只需要运用到for循环依次相乘即可&#xff0c;但要注意for循环i的初始值一定是从1开始到n结束。 #include<stdio.h> int main() {int i,n;int ret 1;//用于存放阶乘的值scanf("%d", &n);for (i 1; i…

c语言求阶乘的两种算法(递归和循环)

循环法 循环法还是比较简单的&#xff0c;很常规&#xff0c;就先输入你要求的阶乘n&#xff0c;然后一直自减 #include <stdio.h> main() {long n,sum1;//10 以上的阶乘就比较大了&#xff0c;所以用longint i;printf("请输入你要求的阶乘呀&#xff1a;");…

【C语言】求一个数的阶乘

#include <stdio.h> //包含标准库的信息int main(void) //每个程序都从main函数的起点开始执行 { //函数开始int p 1;int n;printf("请输入所求阶乘&#xff1a;\n");scanf("%d",&…

C语言求1到20的阶乘之和

#include<stdio.h>int main() {int i, j;long long sum 0, jieCheng;for (i 1; i < 20; i){jieCheng 1;for (j 1; j < i; j){jieCheng * j;}sum jieCheng;}printf("%lld", sum);return 0; }

C语言基础 阶乘:输入一个数,输出它的阶乘。

升级打怪 C语言基础第一题 题目&#xff1a; 输入一个数字&#xff0c;输出它的阶乘。 求阶乘有很多种方法&#xff0c;我下面来例举一种使用while语句的方法&#xff01; 1.首先定义变量&#xff1b; 2.输入所要求的阶乘&#xff1b; 3.使用while循环 fact*i 就是 fac…

阶乘求和 C语言实现求阶乘之和 三种方法实现 先阶乘再累加

题目&#xff1a; 此处题目是以1-20的阶乘之和举例 方法一&#xff1a;使用一层for循环实现 代码简单快捷容易理解 代码示例如下&#xff1a; #include<stdio.h> int main() {double a 1, sum 0;//因为最后值可能会超出int所能接收的范围 故用doubleint n, i;scanf…

C语言 求n的阶乘及阶乘和

题目 随机输入一个整数n&#xff0c;求出n的阶乘 思路 阶乘&#xff0c;每次乘的数依次递增&#xff0c;直到第n个数&#xff0c;因此我们可以设置一个变量result&#xff0c;用于储存每一次的运算结果。且每次乘的数都依次递增&#xff0c;可以使用for循环语句&#xff0c;…

C语言:运用函数实现阶乘

第一次写的时候&#xff0c;输出一直输出的为初始值&#xff0c;没有输出阶乘后的值&#xff0c;找了好久问题才发现&#xff0c;下次一定注意 编程时要考虑到0和1的阶乘 代码如下&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int JC(int num) {in…

【C语言】求阶乘与阶乘之和

中学我们都学习了阶乘的求法&#xff0c;比如要求整数&#xff4e;的阶乘&#xff0c;则&#xff4e;!n(n-1)(n-2)…21。现在有两个问题&#xff0c;要用&#xff23;语言编写程序求&#xff4e;的阶乘&#xff0c;以及求1!2!3!…n!&#xff0c;该如何解决呢&#xff1f;   …

【C语言】阶乘实现

&#x1f389;博客主页&#xff1a;Luo-Kuang-何 &#x1f389;座右铭&#xff1a;一起走向人生巅峰的路上&#x1f601; &#x1f389;学习进度&#xff1a;【C语言】 &#x1f389;博客声明&#xff1a;我将尽我所能&#xff0c;用心写好每一份博客&#xff0c;让更多小伙伴能…

C语言入门——计算n的阶乘

目录 一、问题 二、问题分析 三、代码实现 四、运行结果 一、问题 通过c语言编程计算n的阶乘。 二、问题分析 1、首先明确n的阶乘在数学中怎么算&#xff1a;1*2*……*(n-1)*n n! 2、怎么用c语言来实现呢&#xff1f; &#xff08;1&#xff09;首先要做的是要有这n个数…

C语言 求阶乘和

法一:利用for循环 输入n 后,我们要计算1!2!...n!,我们最容易想到的,也会写的是某单个数的循环,如 int n 5; //当输入n 5时 int i 0; int num 1;//循环总和 int renum 0;//累加总和 for(i 1; i < n; i) // 5 的阶乘 1 * 2 * 3 * 4 * 5 {num * i; } 那么对于一系列的阶…