`
carpenshaw
  • 浏览: 2856 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

在网页中使用Open Flash Chart 展示图表

阅读更多

         这两天学习了 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 )运行程序之后页面的显示效果图

         demo

         如果看到这个结果: C:\Users\John\Documents\flash\svn\data-files\data-47.txt

则可能是 open-flash-chart.swf 文件是 OFC 1.x 版本的,把它换成 2 版本的就成了。

 

4 ,总结

         Open Flash Chart 除了可以显示多种图表外,还提供了一些强大的功能,比如高亮、突出某个点,将图表保存成图片,在图表中移动鼠标会有提示信息,点击图表响应事件等。在项目开发过程中我们经常需要根据实现情况调整数据的来源或者显示的图形。这里我只是写一个简单的入门程序,有兴趣的童鞋可以自己去阅读官方网站或查阅相关的文档。

 

附:本例源码。

分享到:
评论

相关推荐

    Open Flash Chart Flash图表

    - **JavaScript集成**:在网页中使用JavaScript调用Open Flash Chart库,将XML数据传递给Flash对象,并设置图表的位置和大小。 - **动态数据**:可以通过Ajax或其他方式动态获取数据并更新图表,实现数据实时更新...

    open flash chart api

    在Web开发中,数据可视化是至关重要的,Open Flash Chart API 提供了丰富的功能,使得开发者能够轻松创建各种类型的图表,如柱状图、饼图、线图、面积图等,以直观地展示数据。 API 的核心特性包括: 1. **多图表...

    开源flash图表--open flash chart

    总的来说,Open Flash Chart是一个强大且灵活的图表库,它为Web开发人员提供了一种方便的方式来创建美观且功能丰富的图表,尤其适合那些需要在网页上实时展示数据的应用场景。通过深入了解和实践,开发者能够熟练地...

    Open Flash Chart 教程

    - **Flash图表库**:Open Flash Chart是一款基于Adobe Flash技术的图表生成库,它通过SWF文件在网页中呈现图表。 - **JavaScript API**:与Flash交互的桥梁,通过JavaScript设置图表参数并控制图表行为。 2. **...

    open flash chart库

    - **多样化图表类型**:Open Flash Chart支持多种图表类型,如柱状图、折线图、饼图、散点图、雷达图等,满足不同场景的数据展示需求。 - **自定义元素**:开发者可以自由定制图表的各个部分,包括颜色、样式、标签...

    Open Flash Chart所需文件

    Open Flash Chart是一款强大的开源Flash图表库,用于在Web应用程序中创建高质量、互动的图表。它提供了丰富的自定义选项,能够生成各种类型的图表,包括柱状图、饼图、线点图等,使得数据可视化变得更加简单易行。在...

    完整的open flash chart 。

    7. **API**:Open Flash Chart提供了简单的JavaScript API,使得在网页中嵌入和控制图表变得容易。开发者可以使用JavaScript函数来生成图表,更新数据,甚至响应用户的交互事件。 8. **兼容性**:尽管现代Web开发更...

    flash图表组件Open Flash Chart 2.0+(asp/php)自动提取示例+使用说明

    本实例在IE6、IE7、IE8、Chrome、Firefox测试通过,在实际项目使用中,对可能出现的问题,尤其在IE6中无法显示flash图表,本人特撰写《Flash图表组件——使用Open Flash Chart 2.0的一些问题及解决办法》,具体访问...

    图表工具(Open_Flash_Chart)在java中的使用

    尽管在复杂应用中的表现可能不如专业的图形库如JFreeChart,Open Flash Chart凭借其简洁的界面和易用性赢得了用户的青睐。 与JFreeChart相比,Open Flash Chart的一大优势在于其工作原理。它通过服务器获取元数据,...

    open-flash-chart

    在使用Open Flash Chart时,SwfObject通常是必不可少的一部分,它负责在网页中正确地加载和显示图表。 总的来说,Open Flash Chart是一个强大的图表生成工具,结合SwfObject,可以让开发者轻松在网页上创建美观且...

    最新版Open Flash Chart

    虽然在提供的信息中未提及具体内容,但此文件对于初次使用者来说至关重要,因为它会引导用户如何正确使用和配置Open Flash Chart。 `js-ofc-library`目录包含了JavaScript库,这使得在网页中与Open Flash Chart进行...

    Open Flash Chart Sample

    Open Flash Chart是一个基于Flash技术的图表库,它以ActionScript编写,通过在网页中嵌入Flash对象来实现动态的、交互式的图表展示。尽管Flash在现代网页开发中已经逐渐被HTML5取代,但在数据可视化领域,尤其是在...

    open flash chart 实例1

    Open Flash Chart 是一个开源的Flash图表库,它允许开发者轻松地在网页上创建动态、美观的数据可视化图表。这个实例1是关于如何使用Open Flash Chart进行实际操作并获得成功的一个例子。我们将深入探讨Open Flash ...

    Open Flash Chart 报表插件相关

    Open Flash Chart是一款强大的开源图表生成插件,常用于创建交互式、美观的...通过深入研究这些内容,开发者可以更好地理解和掌握Open Flash Chart的使用方法,从而在自己的ASP.NET项目中创建出引人注目的数据图表。

    open flash chart 1.9 文档及源码

    在Open Flash Chart 1.9中,开发者通常需要以下步骤来创建图表: 1. **引入库文件**:在HTML页面中嵌入Open Flash Chart的SWF文件,并设置相应的参数。 2. **构建数据**:生成XML或JSON格式的数据,描述图表的各个...

    open-flash-chart-1[1].9.7.zip_flash chart tr_open flash chart

    Open Flash Chart是一款功能强大的开源Flash图表库,其在IT领域中被广泛用于生成美观且交互性强的数据可视化图表。与JFreeChart等Java图表库相比,Open Flash Chart提供了更为丰富的图表类型和自定义选项,能够满足...

    Open Flash Chart java例子 eclipse 测试通过

    本示例是关于如何在Java环境中使用Open Flash Chart,特别是在Eclipse集成开发环境中进行测试和部署的实践教程。 首先,我们要理解Open Flash Chart的基本工作原理。它主要由两部分组成:服务器端和客户端。服务器...

    open flash chart 2 使用

    **Open Flash Chart 2 使用详解** Open Flash Chart 2 是一款强大的开源图表库,它使用 Adobe Flash 技术来创建各种美观且交互性强的数据可视化图表。这个库特别适合那些需要在网页上展示复杂数据的开发者,它提供...

    Open Flash Chart例子、中文版PDF说明文档、参数表

    客户端在得到数据以后,在Flash Player中渲染出报表图。  附带PDF说明文档,是中文版的。几个步骤教你如何使用open flash chart,容易上手。 参数整理表,包括:饼图、柱状图 、线状图、玻璃柱状图、渐变柱状图、...

Global site tag (gtag.js) - Google Analytics