这两天学习了
Open Flash Chart
。写了一个简单的
Hello World
程序,给大家分享一下
1, Open Flash Chart(OFC)
介绍
OFC
使用
Flash
来展现图表,包括直线图、素描图、柱状图和饼图等,具有生动美观的特点。目前
OFC
已经升级到
2.0
版本(地址:
http://teethgrinder.co.uk/open-flash-chart-2/
),
1.x
版本(地址:
http://teethgrinder.co.uk/open-flash-chart/index.php
)已经停止支持,但仍然普遍使用。在这里我使用的是
Open Flash Chart 2
。
2
版源码经过了优化,使用了
ActionScript 3
,并且用
Adobe Flex
来编译。当然,最重要的改变还是对
JSON
格式数据源的支持!
2
,
OFC
图表生成原理
简单来说,生成
OFC
图表的需要2样东西,
1
是
open-flash-chart.swf
Flash
文件,用于绘制图表。
2
是
JSON
数据源。我们可以在
Web
或
RCP
中加载
Flash
文件,然后读取
JSON
数据来展现图表。
3
,
OFC
的编程实现
目前
PHP
,
Python
,
Ruby
,
.NET
,
JAVA
等已经有
OFC
的实现。这里只介绍
JAVA
的实现。
1
)首先下载
OFC2
,下载地址
http://teethgrinder.co.uk/open-flash-chart-2/downloads.php
,这里使用的是
Version
2 Lug Wyrm Charmer (28th, July 2009)
版。下载完成之后解压,拷贝
open-flash-chart-2-Lug-Wyrm-Charmer\js\swfobject.js
和
open-flash-chart-2-Lug-Wyrm-Charmer\open-flash-chart.swf
两个文件到
Web
项目中。其中,
swfobject.js
是操作
flash
的脚本文件,
open-flash-chart.swf
前面已经介绍过了。
2
)另外一个必需的东西是
JSON
数据源,这里写了一个专门获取
JSON
数据源的
Servlet
类:
GetJsonServlet
package com.test.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jofc2.model.Chart;
import jofc2.model.axis.Label;
import jofc2.model.axis.XAxis;
import jofc2.model.axis.YAxis;
import jofc2.model.elements.BarChart;
import jofc2.model.elements.BarChart.Bar;
/**
* Servlet implementation class GetJsonServlet
*/
public class GetJsonServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public GetJsonServlet() {
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<MonitorCount> counts = initDatas();
int total = counts.size();
List<Label> xLabels = new ArrayList<Label>(total);
List<Bar> barList = new ArrayList<Bar>(total);
for(int i=0; i<total; i++) {
MonitorCount mCount = counts.get(i);
int count = mCount.getCount();
barList.add(new Bar(count));
String xLabel = mCount.getLabel();
xLabels.add(new Label(xLabel));
}
// 设置X轴坐标值
XAxis xAxis = new XAxis();
xAxis.addLabels(xLabels);
// 设置Y轴的范围
YAxis yAxis = new YAxis();
yAxis.setRange(0, 150, 10);
BarChart barChart = new BarChart(BarChart.Style.GLASS);
barChart.addBars(barList);
barChart.setText("HTTP BarChart");
Chart chart = new Chart("HTTP日访问量");
chart.setXAxis(xAxis);
chart.setYAxis(yAxis);
chart.addElements(barChart);
String json = chart.toString();
System.out.println("json = " + json);
sendJson(response, json);
}
/**
* 模拟初始化数据
* @return
*/
private List<MonitorCount> initDatas() {
List<MonitorCount> data = new ArrayList<MonitorCount>();
data.add(new MonitorCount("1月", 100));
data.add(new MonitorCount("2月", 120));
data.add(new MonitorCount("3月", 140));
data.add(new MonitorCount("4月", 125));
data.add(new MonitorCount("5月", 145));
data.add(new MonitorCount("6月", 138));
return data;
}
/**
* 返回JSON数据给客户端
* @param response
* @param json
*/
protected void sendJson(HttpServletResponse response, String json) {
response.setContentType("application/json; charset=utf-8");
PrintWriter writer = null;
try {
writer = response.getWriter();
writer.write(json);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != writer) {
writer.flush();
writer.close();
}
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
class MonitorCount {
private String label;
private Integer count;
public MonitorCount(String label, Integer count) {
super();
this.label = label;
this.count = count;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
}
类中用到了
jofc2
(
Java API for
Open Flash Chart 2
,
地址:
http://code.google.com/p/jofc2/
)的两个
jar
包,
jofc2-1.0-0.jar
和
xstream-1.3.1.jar
。
3
)访问页面
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Open Flash Chart - Hello World</title>
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
var url = encodeURIComponent("/OpenFlashChartHelloWorld/GetJsonServlet");
swfobject.embedSWF("open-flash-chart.swf", "chart", "950", "500", "9.0.0",
"expressInstall.swf",{"data-file":url});
</script>
</head>
<body>
<div id="chart"></div>
</body>
</html>
4
)运行程序之后页面的显示效果图
如果看到这个结果:
C:\Users\John\Documents\flash\svn\data-files\data-47.txt
则可能是
open-flash-chart.swf
文件是
OFC 1.x
版本的,把它换成
2
版本的就成了。
4
,总结
Open
Flash Chart
除了可以显示多种图表外,还提供了一些强大的功能,比如高亮、突出某个点,将图表保存成图片,在图表中移动鼠标会有提示信息,点击图表响应事件等。在项目开发过程中我们经常需要根据实现情况调整数据的来源或者显示的图形。这里我只是写一个简单的入门程序,有兴趣的童鞋可以自己去阅读官方网站或查阅相关的文档。
附:本例源码。
分享到:
相关推荐
- **JavaScript集成**:在网页中使用JavaScript调用Open Flash Chart库,将XML数据传递给Flash对象,并设置图表的位置和大小。 - **动态数据**:可以通过Ajax或其他方式动态获取数据并更新图表,实现数据实时更新...
在Web开发中,数据可视化是至关重要的,Open Flash Chart API 提供了丰富的功能,使得开发者能够轻松创建各种类型的图表,如柱状图、饼图、线图、面积图等,以直观地展示数据。 API 的核心特性包括: 1. **多图表...
总的来说,Open Flash Chart是一个强大且灵活的图表库,它为Web开发人员提供了一种方便的方式来创建美观且功能丰富的图表,尤其适合那些需要在网页上实时展示数据的应用场景。通过深入了解和实践,开发者能够熟练地...
- **Flash图表库**:Open Flash Chart是一款基于Adobe Flash技术的图表生成库,它通过SWF文件在网页中呈现图表。 - **JavaScript API**:与Flash交互的桥梁,通过JavaScript设置图表参数并控制图表行为。 2. **...
- **多样化图表类型**:Open Flash Chart支持多种图表类型,如柱状图、折线图、饼图、散点图、雷达图等,满足不同场景的数据展示需求。 - **自定义元素**:开发者可以自由定制图表的各个部分,包括颜色、样式、标签...
Open Flash Chart是一款强大的开源Flash图表库,用于在Web应用程序中创建高质量、互动的图表。它提供了丰富的自定义选项,能够生成各种类型的图表,包括柱状图、饼图、线点图等,使得数据可视化变得更加简单易行。在...
7. **API**:Open Flash Chart提供了简单的JavaScript API,使得在网页中嵌入和控制图表变得容易。开发者可以使用JavaScript函数来生成图表,更新数据,甚至响应用户的交互事件。 8. **兼容性**:尽管现代Web开发更...
本实例在IE6、IE7、IE8、Chrome、Firefox测试通过,在实际项目使用中,对可能出现的问题,尤其在IE6中无法显示flash图表,本人特撰写《Flash图表组件——使用Open Flash Chart 2.0的一些问题及解决办法》,具体访问...
尽管在复杂应用中的表现可能不如专业的图形库如JFreeChart,Open Flash Chart凭借其简洁的界面和易用性赢得了用户的青睐。 与JFreeChart相比,Open Flash Chart的一大优势在于其工作原理。它通过服务器获取元数据,...
在使用Open Flash Chart时,SwfObject通常是必不可少的一部分,它负责在网页中正确地加载和显示图表。 总的来说,Open Flash Chart是一个强大的图表生成工具,结合SwfObject,可以让开发者轻松在网页上创建美观且...
虽然在提供的信息中未提及具体内容,但此文件对于初次使用者来说至关重要,因为它会引导用户如何正确使用和配置Open Flash Chart。 `js-ofc-library`目录包含了JavaScript库,这使得在网页中与Open Flash Chart进行...
Open Flash Chart是一个基于Flash技术的图表库,它以ActionScript编写,通过在网页中嵌入Flash对象来实现动态的、交互式的图表展示。尽管Flash在现代网页开发中已经逐渐被HTML5取代,但在数据可视化领域,尤其是在...
Open Flash Chart 是一个开源的Flash图表库,它允许开发者轻松地在网页上创建动态、美观的数据可视化图表。这个实例1是关于如何使用Open Flash Chart进行实际操作并获得成功的一个例子。我们将深入探讨Open Flash ...
Open Flash Chart是一款强大的开源图表生成插件,常用于创建交互式、美观的...通过深入研究这些内容,开发者可以更好地理解和掌握Open Flash Chart的使用方法,从而在自己的ASP.NET项目中创建出引人注目的数据图表。
在Open Flash Chart 1.9中,开发者通常需要以下步骤来创建图表: 1. **引入库文件**:在HTML页面中嵌入Open Flash Chart的SWF文件,并设置相应的参数。 2. **构建数据**:生成XML或JSON格式的数据,描述图表的各个...
Open Flash Chart是一款功能强大的开源Flash图表库,其在IT领域中被广泛用于生成美观且交互性强的数据可视化图表。与JFreeChart等Java图表库相比,Open Flash Chart提供了更为丰富的图表类型和自定义选项,能够满足...
本示例是关于如何在Java环境中使用Open Flash Chart,特别是在Eclipse集成开发环境中进行测试和部署的实践教程。 首先,我们要理解Open Flash Chart的基本工作原理。它主要由两部分组成:服务器端和客户端。服务器...
**Open Flash Chart 2 使用详解** Open Flash Chart 2 是一款强大的开源图表库,它使用 Adobe Flash 技术来创建各种美观且交互性强的数据可视化图表。这个库特别适合那些需要在网页上展示复杂数据的开发者,它提供...
客户端在得到数据以后,在Flash Player中渲染出报表图。 附带PDF说明文档,是中文版的。几个步骤教你如何使用open flash chart,容易上手。 参数整理表,包括:饼图、柱状图 、线状图、玻璃柱状图、渐变柱状图、...