最近公司有项目做前端的数据报表。
采用了jQuery 的一个图形插件 Flot.(
http://code.google.com/p/flot/)。
Flot 是基于canvas 的纯javascript的绘图工具,支持 Internet Explorer 6+, Firefox 2.x+, Safari 3.0+, Opera 9.5+ and Konqueror 4.x+
在excanvas的支持下, 顽固的IE6也支持canvas绘图。(性能有点差)
有需求是鼠标滑过标签的时候可以高亮显示,点击的时候合适随意隐藏一个图形。
花了一天的时间写了一个插件,趁周末整理了一下。
可以设置的参数有 5 个
* legend.labelEvent:boolean !//是否启用 默认不启用
* legend.overWidth: number, //(px) 鼠标滑过的时候线条的宽度
* legend.removeColor:"#fff",//(color) 线条被移除后 标签显示的颜色
* legend.removeLabelBoxBorderColor:"#ccc",//(color) 线条移除后,标签边框的颜色
* legend.reDraw: boolean // 是否重新绘制图形的位置, 默认是否。
注意:与其他插件同时使用时 如果其他插件 调用了setupGrid() 这个方法,图形也会被重绘。
实现的简单介绍:
1.初始时,记录原始的数据,和生成都标签(重绘后 数据和标签会改变)
2.获取相应的标签 并添加事件。
注意:args 变量不可以是全局的, 因为如果同一个页面有两个以及以上的图形的时候会冲突。
args.options = $.extend(true, {}, {legend: params}, plotOptions);
if(args.currentPlot.labelEvent == undefined) {//init all label! 保存所有的数据和对应的标签
args.currentPlot.labelEvent = {
_legendContainer: getLegendContainer(plot),//数据被清空的时候 保存
_legend:getLegend(plot),//所有标签
_showLabel:[],//该标签所对应的数据是否可显示
_labelWidth:[]//该数据的线条 默认的宽度
};
var legend = args.currentPlot.labelEvent._legend;
args.currentPlot.nataveData = $.extend(true, {}, args.data);
args.options._noReDrawed_ = true;//this is reDraw by other plug! if this is reDrawed by other plug ,and it's undefined!
getBoundElement(legend).each(function(i){
elementEventBound($(this), i, args);
});
}else if(args.currentPlot.labelEvent._legend.get(0) != getLegend(plot).get(0)) {//判断标签是否被重绘了 即是否调用了 setupGrid() 这个方法
var legend = replaceLegend(plot, args.currentPlot.labelEvent._legend);
getBoundElement(legend).each(function(i){
elementEventBound($(this), i, args);
});
}
实现比较简单,部分使用功能没有实现,比如自由的添加事件,等等....
SVN 地址 : http://lineblog.googlecode.com/svn/trunk/javascript/flot/
文件夹下面 jquery , flot 请另行下载,或者使用附件中文件!
转载请保留出处:
http://lchshu001.iteye.com/blog/1325410
2011-12-26 12:00 修复一个错误!
2011-12-28 15:00 修复IE下的Bug(后面的下载直接替换即可!)
分享到:
相关推荐
- **交互性**:用户可以通过鼠标悬停、点击等交互方式获取图表上的详细信息,实现数据的动态探索。 - **灵活性**:Flot允许自定义数据点、轴标签、图例、网格等多个方面,以适应不同的设计风格。 - **可扩展性**...
动画和交互** Flot不仅支持静态图表,还提供了动画效果,如平滑的缩放和平移。用户可以轻松地添加缩放和拖动功能,使得图表更具交互性。例如: ```javascript var options = { grid: { hoverable: true, ...
6. **插件丰富**:Flot 社区开发了许多插件,扩展了其功能,如图例、工具提示、堆叠图、鼠标跟踪等。 `flot-flot-958e5fd` 这个目录很可能是解压后的 Flot 源代码,包含了示例、文档、库文件以及可能的测试用例。...
Flot的社区活跃,开发了许多插件,如图例插件(用于显示图表下方的图例)、网格插件(绘制坐标轴网格线)和堆叠插件(用于数据堆叠展示)。这些插件进一步增强了Flot的功能,使其能够处理更复杂的数据可视化场景。 ...
Flot还提供了许多高级特性,如动画效果、交互式图例、鼠标跟踪等。通过调整`options`对象中的属性,你可以实现这些功能。例如,启用鼠标跟踪可以显示悬停时的数据点信息: ```javascript var options = { // ......
JavaScript(简称JS)是一种轻量级的脚本语言,广泛应用于网页和网络应用开发,尤其在数据可视化领域,JS库如Flot起到了重要作用。Flot是一个基于jQuery的开源图表库,能够帮助开发者轻松地在网页上绘制出各种高质量...
Flot 还有一些插件,如 `flot.tooltip` 和 `flot.resize`,可以进一步增强其功能。`flot.tooltip` 提供了自定义的提示框,而 `flot.resize` 则能自动处理窗口大小变化时的图表重绘。 总结来说,Flot 0.8.3 是一个...
4. **交互性**:用户可以通过鼠标操作与图表进行交互,如悬停显示数据点值,点击选中数据点等,Flot提供了丰富的事件处理函数供开发者定制交互行为。 5. **可定制**:Flot允许开发者通过配置选项来调整图表的样式,...
这是 jQuery Flot 图绘图库的插件。 它尝试以更平滑的方式显示折线图。 该插件基于此处提到的 nergal.dev 的工作。 这项工作是根据 MIT 许可证获得许可的。 它包括一个“拟合点”功能(法院:Michael Zinsmaier),...
7. **社区活跃**:由于其开源性质,Flot有一个活跃的开发者社区,不断有新的插件和扩展被开发出来,如对触摸设备的支持、时间轴插件等,这些扩展极大地丰富了Flot的功能。 在使用Flot时,开发者通常会遵循以下步骤...
其中,`Algorithm-flot-downsample.zip`是一个针对Flot图表的downsample插件,其核心目的是在处理大量数据时提高图表的性能和渲染效率。本文将深入探讨这个插件的原理、实现方式以及实际应用。 一、Flot图表基础 ...
- **交互性**:支持鼠标悬停、点击事件、图表缩放和滚动等功能,增强了用户体验。 - **时间序列数据**:Flot特别适合处理带有时间戳的数据,可以轻松地将时间轴与数据点对应起来。 - **实时更新**:对于需要动态...
在jQuery生态系统中,有多个图表插件可供选择,例如Highcharts、jsCharts和Flot。这三个插件都是JavaScript库,专门设计用于创建各种类型的图表,如柱状图、折线图、饼图等。 **Highcharts** Highcharts是一款功能...
“flot.tooltip”插件的设计思路是通过监听鼠标移动事件,根据鼠标位置动态计算并显示工具提示。它支持多种自定义选项,如工具提示的样式、内容以及显示位置。这样,开发者可以轻松地调整工具提示的外观,使之与网站...
8. **插件扩展**:除了基本功能,Flot还有一系列插件,如pie插件用于饼图,stack插件用于堆积图表,time插件处理时间轴,以及zoom和pan插件实现缩放和平移操作。 9. **实例分析**:压缩包中的基本实例可能包括了...
2. 动画效果:Flot支持图表的动态加载和动画过渡,使得数据变化过程更加直观和生动。 3. 高度可定制:Flot提供了一系列配置选项,可以自定义图表的线条样式、颜色、轴标签、图例等,满足不同场景的需求。 4. 响应...
- Flot 社区提供了许多插件,如触摸支持、时间轴、鼠标跟踪、区域选择等,可以进一步增强其功能。 7. **实例解析** - 通过分析压缩包中的示例代码,可以学习如何初始化画布、设置数据和选项,以及如何响应用户...
总结来说,Flot是一个优秀的jQuery图表插件,它的易用性、强大的功能和丰富的图表类型使其成为开发者的首选之一。结合中文API文档,无论是新手还是经验丰富的开发者,都能够高效地利用Flot创建出美观且实用的数据...