`
zengshaotao
  • 浏览: 787670 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

highchart图标和table切换

 
阅读更多

原文地址:http://www.stepday.com/topic/?915

用图表呈现数据有些时候也不是那么直观,总希望能够可以切换至表格的形式呈现数据。表格体现数据还是一目了然的。所以我们可以增加一个功能,让highcharts图表和table表格之间可以相互切换呈现数据。这里我提供了一个比较单一的切换功能,后期可以自行变换方式,比如:通过工具箱内按钮进行切换也或者右键菜单内进行切换

一、highcharts图表转换为table表格

highcharts图表想要转换为table,我们需要获取其核心数据即可:

1、categories数据:也就是获取刻度,也就是table的表头数据;

2、series:每一组序列以及其在每一个刻度上所体现的数据值;

3、title:图表标题,能够让table数据体现更加明了;

4、subtitle:副标题;

拿到这些数据过后,我们需要借助于jQuery操作table的一些方法进行数据的附加。转换函数如下所示:

 

01.///将Highcharts图表数据切换为Table表格呈现
02.function HighchartsToTable(obj) {           
03.obj.onclick = function () {
04.TableToHighcharts(obj);
05.};
06.obj.value = "切换至图表呈现";
07. 
08.//拿到图表对象
09.var chart = $("#container").highcharts();
10.if (chart != null) {               
11.//拿到X轴集合对象
12.var categories = chart.xAxis[0].categories;
13.//拿到series集合
14.var seriesList = chart.series;
15.var title = chart.title.textStr;
16.var subtitle = chart.subtitle.textStr;
17. 
18.//插入表头
19.$("#container").html("");
20.var tableObj = $("#container");              
21.var tr;
22.//插入表格标题
23.if (title.length > 0) {
24.tr = $("<tr></tr>");
25.tr.appendTo(tableObj);
26.var td = $("<td colspan='" + categories.length + 1 + "' style='text-align:center; font-weight:bold;'>"+ title + "</td>");
27.td.appendTo(tr);                   
28.}
29.//插入副标题
30.if (subtitle.length > 0) {
31.tr = $("<tr></tr>");
32.tr.appendTo(tableObj);
33.td = $("<td colspan='" + categories.length + 1 + "' style='text-align:center;'>" + subtitle + "</td>");
34.td.appendTo(tr);                   
35.}
36.tr = $("<tr></tr>")
37.tr.appendTo(tableObj);
38.td = $("<td>站点\\日期</td>");
39.td.appendTo(tr);
40.for (var i = 0; i < categories.length; i++) {
41.td = $("<td>" + categories[i] + "</td>");
42.td.appendTo(tr);
43.}
44.//分批插入数据
45.for (var i = 0; i < seriesList.length; i++) {
46.tr = $("<tr></tr>");
47.tr.appendTo(tableObj);
48.//先加入一个序列名称
49.td = $("<td>" + seriesList[i].name + "</td>");
50.td.appendTo(tr);
51.//遍历数据点追加数据值
52.for (var j = 0; j < seriesList[i].data.length; j++) {
53.td = $("<td>" + seriesList[i].data[j].y + "</td>");
54.td.appendTo(tr);
55.}
56.}
57.else {
58.alert("获取图表对象失败!");
59.}
60.}

 

为了让table表格覆盖掉之前的图表对象,所以我们方法内执行了一段代码:

 

1.$("#container").html("");

 

清空图表内容,然后在附加一个table对象进去。

效果图如下所示:

highcharts图表呈现数据==》table表格呈现数据

 

二、Table表格切换至Highcharts图表

这个切换并未去提取table表格的数据然后然组装数据赋值给highcharts独享的,这里而是在图表呈现初期就设置了一个全局变量,将图表的options对象抽取出来。

 

01.//图表配置项
02.var options = {
03.chart: {
04.type: "line"
05.},
06.title: {
07.text: '各大站点每月独立IP量关系图呈现'
08.},
09.subtitle: {
10.text: 'From:www.stepday.com'
11.},
12.xAxis: {
13.categories: ['一月份''二月份''三月份''四月份''五月份''六月份']
14.},
15.yAxis: {
16.title: {
17.text: '独立IP'
18.},
19.plotLines: [{
20.value: 0,
21.width: 1,
22.color: '#808080'
23.}]
24.},
25.credits: {
26.text: "www.stepday.com",
27.href: "http://www.stepday.com",
28.style: {
29.color: "red"
30.}
31.},
32.series: [{
33.name: 'stepday',
34.data: [30020, 25186, 45356, 63452, 34554, 49327]
35.}, {
36.name: 'tuiwosa',
37.data: [40020, 35186, 55356, 53452, 54554, 69327]
38.}]
39.};

 

然后在table切换至highcharts图表的时候去重新更具options配置创建一下图表即可:

 

1.///创建图表 根据options设置
2.function CreateHighcharts() {
3.$('#container').highcharts(options);
4.}

 

Table转换为highcharts的方法如下所示:

 

01.//提取table数据生成Highcharts图表
02.function TableToHighcharts(obj) {           
03.obj.onclick = function () {
04.HighchartsToTable(obj);
05.};
06.obj.value = "切换至表格呈现";
07. 
08.//拿到图表对象
09.var tableObj = $("#container");
10.if (tableObj == null) {
11.alert("图表对象为空!");
12.return;
13.}
14.tableObj.html("");
15.CreateHighcharts();
16.}

 

效果图如下所示:

table表格呈现数据==》highcharts图表呈现数据

 

完整示例代码如下所示:

 

001.<!DOCTYPE HTML>
002.<html>
003.<head>
004.<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
005.<title>highcharts图表与table相互之间的转换关系</title>
006.<script type="text/javascript" src="js/jquery-1.11.1.min.js"></script>
007.<script type="text/javascript" src="js/highcharts.js"></script>
008.<style type="text/css">
009.#container tr
010.{
011.line-height:35px;
012.}
013.#container td
014.{
015.border: 1px solid green;
016.}
017.</style>
018.<script type="text/javascript">
019. 
020.//图表配置项
021.var options = {
022.chart: {
023.type: "line"
024.},
025.title: {
026.text: '各大站点每月独立IP量关系图呈现'
027.},
028.subtitle: {
029.text: 'From:www.stepday.com'
030.},
031.xAxis: {
032.categories: ['一月份', '二月份', '三月份', '四月份', '五月份', '六月份']
033.},
034.yAxis: {
035.title: {
036.text: '独立IP'
037.},
038.plotLines: [{
039.value: 0,
040.width: 1,
041.color: '#808080'
042.}]
043.},
044.credits: {
045.text: "www.stepday.com",
046.href: "http://www.stepday.com",
047.style: {
048.color: "red"
049.}
050.},
051.series: [{
052.name: 'stepday',
053.data: [30020, 25186, 45356, 63452, 34554, 49327]
054.}, {
055.name: 'tuiwosa',
056.data: [40020, 35186, 55356, 53452, 54554, 69327]
057.}]
058.};
059. 
060.///创建图表 根据options设置
061.function CreateHighcharts() {
062.$('#container').highcharts(options);
063.}
064. 
065.$(function () {
066.CreateHighcharts();
067.});
068. 
069.///将Highcharts图表数据切换为Table表格呈现
070.function HighchartsToTable(obj) {           
071.obj.onclick = function () {
072.TableToHighcharts(obj);
073.};
074.obj.value = "切换至图表呈现";
075. 
076.//拿到图表对象
077.var chart = $("#container").highcharts();
078.if (chart != null) {               
079.//拿到X轴集合对象
080.var categories = chart.xAxis[0].categories;
081.//拿到series集合
082.var seriesList = chart.series;
083.var title = chart.title.textStr;
084.var subtitle = chart.subtitle.textStr;
085. 
086.//插入表头
087.$("#container").html("");
088.var tableObj = $("#container");              
089.var tr;
090.//插入表格标题
091.if (title.length > 0) {
092.tr = $("<tr></tr>");
093.tr.appendTo(tableObj);
094.var td = $("<td colspan='" + categories.length + 1 + "' style='text-align:center; font-weight:bold;'>" + title + "</td>");
095.td.appendTo(tr);                   
096.}
097.//插入副标题
098.if (subtitle.length > 0) {
099.tr = $("<tr></tr>");
100.tr.appendTo(tableObj);
101.td = $("<td colspan='" + categories.length + 1 + "' style='text-align:center;'>" + subtitle + "</td>");
102.td.appendTo(tr);                   
103.}
104.tr = $("<tr></tr>")
105.tr.appendTo(tableObj);
106.td = $("<td>站点\\日期</td>");
107.td.appendTo(tr);
108.for (var i = 0; i < categories.length; i++) {
109.td = $("<td>" + categories[i] + "</td>");
110.td.appendTo(tr);
111.}
112.//分批插入数据
113.for (var i = 0; i < seriesList.length; i++) {
114.tr = $("<tr></tr>");
115.tr.appendTo(tableObj);
116.//先加入一个序列名称
117.td = $("<td>" + seriesList[i].name + "</td>");
118.td.appendTo(tr);
119.//遍历数据点追加数据值
120.for (var j = 0; j < seriesList[i].data.length; j++) {
121.td = $("<td>" + seriesList[i].data[j].y + "</td>");
122.td.appendTo(tr);
123.}
124.}
125.} else {
126.alert("获取图表对象失败!");
127.}
128.}
129. 
130.//提取table数据生成Highcharts图表
131.function TableToHighcharts(obj) {           
132.obj.onclick = function () {
133.HighchartsToTable(obj);
134.};
135.obj.value = "切换至表格呈现";
136. 
137.//拿到图表对象
138.var tableObj = $("#container");
139.if (tableObj == null) {
140.alert("图表对象为空!");
141.return;
142.}
143.tableObj.html("");
144.CreateHighcharts();
145.}
146.</script>
147.</head>
148.<body>
149.<div id="container" style="width: 400px; margin: 0 auto">
150.</div>
151.<div style="text-align: center; width: 100%;">
152.<input type="button" value="切换到表格呈现" onclick="HighchartsToTable(this)" />
153.</div>
154.</body>
155.</html>
分享到:
评论

相关推荐

    Highcharts 图标+等级星

    总的来说,"Highcharts 图标+等级星"涉及的是JavaScript编程中的数据可视化和用户交互,具体包括Highcharts的图表制作和jQuery Rating插件的使用,通过它们可以创建既有数据展示又具有星级评价功能的动态图表。...

    matlab开发-HighChart

    在本项目"matlab开发-HighChart"中,我们将重点探讨如何利用MATLAB与HighChart结合,创建动态和交互式的图表。HighChart是一个强大的JavaScript库,用于构建高质量的网页图表,其在数据可视化方面表现卓越,尤其适用...

    HighChart API

    HighChart API 是一款强大的JavaScript图表库,用于在Web页面上创建动态、交互式的图表和图形。这个API提供了丰富的选项和功能,使得开发者可以定制各种类型的图表,如柱状图、折线图、饼图、散点图等。下面将详细...

    highchart

    只需更改配置对象中的`series.type`即可切换图表类型。 7. **交互与事件**: 高级特性包括点击事件、鼠标悬浮提示、图表导出等功能。例如,`plotOptions.series.events.click`可添加点击事件处理函数,`tooltip`...

    Highchart Demo

    在"Highchart Demo"这个实例中,我们将深入探讨如何利用Highcharts来制作各种类型的图表,以及相关的JavaScript配置和数据接收格式。 首先,Highcharts支持多种图表类型,如折线图、柱状图、饼图、散点图、面积图等...

    HighChart曲线图

    在Web开发中,数据可视化是至关重要的,HighChart凭借其丰富的功能和易用性,深受开发者喜爱。以下是对"HighChart曲线图"的详细解释和相关知识点: 1. **HighChart简介**:HighChart是一个基于纯JavaScript的图表库...

    引用:highChart控件不错,挺漂亮

    HighChart是一款广泛应用于Web开发中的数据可视化库,它以其丰富的图表类型、良好的交互性和美观的样式赢得了开发者们的喜爱。在本文中,我们将深入探讨HighChart控件的核心特性、使用方法以及如何结合源码进行定制...

    highchart中文帮助文档

    - **width**和**height**: 分别设定图表的宽度和高度,如果不指定,则图表会根据容器自适应。 - **margin**: 图表与其他元素之间的间距,可以通过数组设置四个方向的间距,例如`[0, 0, 0, 0]`。 - **...

    HighChart

    总的来说,HighChart是一款强大的前端数据可视化工具,其易用性、灵活性和丰富的功能使其成为Web开发中不可或缺的一部分。无论是简单的数据展示还是复杂的分析应用,HighChart都能够提供高效且美观的解决方案。

    highchart源码

    highchart源码

    highchart图表加图标.rar_The Weather_highchart_highcharts

    Use the highcharts foreground frame to draw a graph and display icons at each point of the curve. Effect such as weather forecast chart.

    web图表和highchart

    通过掌握Highcharts和小图标设计技巧,UI设计师能够创建出既美观又实用的网页界面,提升产品的专业性和用户满意度。在实际工作中,可以参考各种设计资源库和社区,学习并借鉴优秀的设计案例,不断优化自己的设计技能...

    highchart源码及实例

    Highcharts以其易用性、灵活性和丰富的图表类型而广受欢迎,被广泛应用于数据可视化领域。 一、Highcharts基本概念 1. 图表类型:Highcharts支持多种图表类型,如折线图、柱状图、饼图、散点图、面积图、瀑布图、...

    highchart的例子

    highchart的一个例子

    highchart(api)

    这个压缩包文件的标题“highchart(api)”显然与Highcharts的API使用有关,可能包含了一些关于如何利用Highcharts API来绘制图表的示例或教程。 Highcharts的核心功能包括折线图、柱状图、饼图、散点图等多种图表...

    highchart.rar

    在压缩包中的`highchart`文件很可能包含了这样的示例代码,且已经添加了详细的注释,便于理解和使用。如果你想要进一步定制图表,可以研究Highcharts的API文档,了解更多高级特性,如数据加载、交互事件、动态更新等...

    bootstrap+EasyUI+highchart中文参考手册

    bootstrap+EasyUI+highchart中文参考手册,本人是后端开发,对前端不是很熟悉,所以在做项目的时候采用了这三个技术,因为是框架所以用起来开发前端很方便,果断选择,后端程序员也能开发出漂亮的前端页面了

    highchart 3 离线 API 完整版

    "Highchart 3 离线 API 完整版"是Highcharts的第三个主要版本的离线文档和资源包,它包含了所有关于Highcharts 3的API接口、方法、配置选项以及示例代码,方便开发者在无网络环境下查阅和学习。 在Highcharts 3中,...

    HighChart 3.0.2 Demo+API

    3.0.2是HighChart的一个版本,该版本提供了丰富的图表类型和高度可定制的选项。 HighChart的核心功能包括但不限于以下几点: 1. **图表类型多样**:HighChart支持多种图表类型,如折线图、柱状图、饼图、散点图、...

Global site tag (gtag.js) - Google Analytics