原文地址: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对象进去。
效果图如下所示:
==》
二、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.
}
效果图如下所示:
==》
完整示例代码如下所示:
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 图标+等级星"涉及的是JavaScript编程中的数据可视化和用户交互,具体包括Highcharts的图表制作和jQuery Rating插件的使用,通过它们可以创建既有数据展示又具有星级评价功能的动态图表。...
在本项目"matlab开发-HighChart"中,我们将重点探讨如何利用MATLAB与HighChart结合,创建动态和交互式的图表。HighChart是一个强大的JavaScript库,用于构建高质量的网页图表,其在数据可视化方面表现卓越,尤其适用...
HighChart API 是一款强大的JavaScript图表库,用于在Web页面上创建动态、交互式的图表和图形。这个API提供了丰富的选项和功能,使得开发者可以定制各种类型的图表,如柱状图、折线图、饼图、散点图等。下面将详细...
只需更改配置对象中的`series.type`即可切换图表类型。 7. **交互与事件**: 高级特性包括点击事件、鼠标悬浮提示、图表导出等功能。例如,`plotOptions.series.events.click`可添加点击事件处理函数,`tooltip`...
在"Highchart Demo"这个实例中,我们将深入探讨如何利用Highcharts来制作各种类型的图表,以及相关的JavaScript配置和数据接收格式。 首先,Highcharts支持多种图表类型,如折线图、柱状图、饼图、散点图、面积图等...
在Web开发中,数据可视化是至关重要的,HighChart凭借其丰富的功能和易用性,深受开发者喜爱。以下是对"HighChart曲线图"的详细解释和相关知识点: 1. **HighChart简介**:HighChart是一个基于纯JavaScript的图表库...
HighChart是一款广泛应用于Web开发中的数据可视化库,它以其丰富的图表类型、良好的交互性和美观的样式赢得了开发者们的喜爱。在本文中,我们将深入探讨HighChart控件的核心特性、使用方法以及如何结合源码进行定制...
- **width**和**height**: 分别设定图表的宽度和高度,如果不指定,则图表会根据容器自适应。 - **margin**: 图表与其他元素之间的间距,可以通过数组设置四个方向的间距,例如`[0, 0, 0, 0]`。 - **...
总的来说,HighChart是一款强大的前端数据可视化工具,其易用性、灵活性和丰富的功能使其成为Web开发中不可或缺的一部分。无论是简单的数据展示还是复杂的分析应用,HighChart都能够提供高效且美观的解决方案。
highchart源码
Use the highcharts foreground frame to draw a graph and display icons at each point of the curve. Effect such as weather forecast chart.
通过掌握Highcharts和小图标设计技巧,UI设计师能够创建出既美观又实用的网页界面,提升产品的专业性和用户满意度。在实际工作中,可以参考各种设计资源库和社区,学习并借鉴优秀的设计案例,不断优化自己的设计技能...
Highcharts以其易用性、灵活性和丰富的图表类型而广受欢迎,被广泛应用于数据可视化领域。 一、Highcharts基本概念 1. 图表类型:Highcharts支持多种图表类型,如折线图、柱状图、饼图、散点图、面积图、瀑布图、...
highchart的一个例子
这个压缩包文件的标题“highchart(api)”显然与Highcharts的API使用有关,可能包含了一些关于如何利用Highcharts API来绘制图表的示例或教程。 Highcharts的核心功能包括折线图、柱状图、饼图、散点图等多种图表...
在压缩包中的`highchart`文件很可能包含了这样的示例代码,且已经添加了详细的注释,便于理解和使用。如果你想要进一步定制图表,可以研究Highcharts的API文档,了解更多高级特性,如数据加载、交互事件、动态更新等...
bootstrap+EasyUI+highchart中文参考手册,本人是后端开发,对前端不是很熟悉,所以在做项目的时候采用了这三个技术,因为是框架所以用起来开发前端很方便,果断选择,后端程序员也能开发出漂亮的前端页面了
"Highchart 3 离线 API 完整版"是Highcharts的第三个主要版本的离线文档和资源包,它包含了所有关于Highcharts 3的API接口、方法、配置选项以及示例代码,方便开发者在无网络环境下查阅和学习。 在Highcharts 3中,...
3.0.2是HighChart的一个版本,该版本提供了丰富的图表类型和高度可定制的选项。 HighChart的核心功能包括但不限于以下几点: 1. **图表类型多样**:HighChart支持多种图表类型,如折线图、柱状图、饼图、散点图、...