`

用TWaver实现组合的Chart

阅读更多

TWaver组件中提供了一些通用的Chart,比如Line Chart,Bar Chart,Bubble Chart,Percent Chart等,对于一些复杂的Chart我们也可以通过定制的方式来实现,如前面所给出的用swing制作精美ERP图表,仔细看来这些Chart都是单个图,有客户要实现多个Chart的整合,比如Line Chart和Bar Chart组合显示,这改如何来实现?通常我们想到的方式是通过叠加来显示,将TWaver的这两个组件叠加起来,但这会带来很多不必要的麻烦,下面我们通过定制Chart的方式来实现,先看看最终的实现效果:

这个图展示的是2012年下半年的降雨量和温度走势,这就是一个很简单的Line Chart和Bar Chart叠加的图,这里采取的实现方式是定制Chart,首先创建一个类继承于Bar Chart,在Bar Chart上draw出Line Chart,主要的实现代码也就是在PaintChart里,我们来看看具体的代码实现:

 

public void paintChart(Graphics2D g2d, int width, int height) {
	super.paintChart(g2d, width, height);
	Rectangle rect = this.getBackgroundBounds();
	double xScaleGap = rect.getWidth()/(xScaleCount*2+1);
	double yPixelGap = this.toValidHeight(rect.getHeight())/ this.lineRange;
	for(int i = 0; i< lineDatas.size(); i++){
		Data data = (Data)lineDatas.get(i);
		paintData(g2d,data,rect,xScaleGap,yPixelGap);
	}
}

 

private void paintData(Graphics2D g2d,Data data,Rectangle rect,double xScaleGap, double yPixelGap){
		List dataValues = data.getValues();
		Point2D lastPoint = null;
		Point2D currentPoint = null;
		g2d.setColor(data.getColor());
		g2d.setStroke(new BasicStroke(data.getLineWidth()));
		if(dataValues != null && dataValues.size() >0){
			for(int i=0 ;i < xScaleCount; i++){
				double value = ((Double) dataValues.get(i)).doubleValue();
				double x = rect.getX() - this.shadowOffset + xScaleGap * (2*(i+1)-0.5);
				double y = rect.getY() + this.toValidHeight(rect.height) - value*yPixelGap;
				currentPoint = new Point2D.Double(x,y);
				if(lastPoint != null){
					Line2D line = new Line2D.Double(lastPoint,currentPoint);
					g2d.draw(line);
				}
				Shape shape = new Rectangle2D.Double(x-2, y-2,4,4);
				g2d.fill(shape);
				g2d.drawString(formatLineValue(value), ((Double)x).floatValue(), ((Double)y).floatValue());
				lastPoint = currentPoint;
			}
		}
	}

 

paint方法中主要是通过获取Bar Chart的背景大小,来计算出x轴刻度的间隙和Y轴像素的间隙,这样在绘制Line Chart上每个值的具体坐标时就比较容易了。其中我们还定义了Data这样一个实体bean,用于存放line chart上显示的数值,主要给出了line chart每条线的颜色和粗细以及具体的值这些参数,我们可以根据实际需求加上自己所需的参数,比如是否显示lineChart上的值,值的颜色,字体,大小,当然还可以实现双Y坐标轴,在右方draw出lineChart的坐标轴等。

 

最后给出上图实现效果的具体代码:

lineAndBarChart

 

 

 

0
0
分享到:
评论

相关推荐

    基于TWaver实现的3D机房Demo

    【基于TWaver实现的3D机房Demo】 在IT行业中,3D可视化技术正在逐步渗透到各个领域,尤其是在数据中心管理方面。TWaver是一款强大的WebGL3D框架,它为开发者提供了一个高效、灵活的工具,用于创建交互式的3D应用...

    twaver.js使用示例

    5. **报警系统模拟**:“alarm”可能是一个具体的应用场景,展示如何使用twaver.js来设计和实现报警系统的图形界面,包括节点的状态变化、事件响应等。 6. **交互操作**:学习如何利用twaver.js库实现图形元素的交互...

    TWaver-java-4.1最新 官网试用版jar包及Demo

    2. demo.jar:这是TWaver的演示示例程序的Java可执行文件,包含了用TWaver实现的各种图表和图形案例。 3. demo.sh:这是Linux或Mac OS下的Shell脚本,同样用于启动Demo程序,展示了TWaver跨平台的能力。 4. License....

    TWaver的3d图形组件库,小demo

    描述中提到的“TWaver HTML5 3D 制作的demo提供一个3d图形展示的基本代码”意味着这个压缩包内包含了一个使用TWaver库构建的3D图形演示程序,其中包含了实现基本3D效果的源代码。开发者可以通过学习和分析这个demo,...

    flex Twaver组件使用

    此外,TWaver Flex还预定义了丰富的业务对象,如告警(`twaver.IAlarm`)和告警容器(`twaver.AlarmBox`),图层(`twaver.ILayer`)和图层管理容器(`twaver.LayerBox`),以及拓扑网元(`twaver.IElement`)和拓扑...

    TWaver HTML5 Developer Guide

    Chart组件章节介绍了多种图表组件的使用方法,包括BarChart、LineChart、PieChart、DialChart、BubbleChart和RadarChart等,这些都是用于数据可视化分析的重要工具。 告警的使用章节说明了如何在TWaver HTML5组件中...

    twaver web实例源码

    【标签】"twaver"强调了该资源的核心技术是Twaver,这意味着源码将重点展示如何使用Twaver的API进行图形化建模和数据绑定,实现复杂图形的动态更新和自定义布局。同时,它也可能涉及到Twaver的各种特性,如图表类型...

    twaver-java-4.1

    TWaver的API设计友好,使得即使对数据可视化不熟悉的程序员也能快速上手,实现复杂的图形设计。 【标签】"TWaver 最新开发包" 指明了这是TWaver的最新版本,意味着它包含了最新的功能改进、性能优化以及可能的bug...

    TWaver“一站式”UI组件提供包括网络拓扑图、地图、设备面板图、流程图、各种Chart图表、树图、表格等各种通用组件

    使用TWaver前,需熟悉几个基本概念:图元(Element)、容器(DataBox)和画布(Network)。 图元:图形中的各种基本元素,如节点(Node)、连线(Link)等; 容器:图元都统一放置在一个容器(DataBox)中进行管理...

    TWaver HTML5 开发指南代码

    在`TwaverWeb`目录中,可能包含了多个示例代码,这些示例展示了如何使用TWaver创建各种拓扑图和机房展示。通过学习和研究这些代码,开发者可以快速掌握TWaver的用法,将其应用到实际项目中。 综上,TWaver HTML5...

    TWaver_Flex中文帮助文档

    文档还详细介绍了Chart组件,包括各种图表的使用,如ChartValue&ChartValues、BarChart、LineChart、PieChart、DialChart和BubbleChart等。 ### 告警功能 TWaver Flex中的告警功能是该组件的一个重要组成部分,...

    twaver-flex-3.6.5 官方demo

    在压缩包文件"twaver-flex-3.6.5"中,用户可以找到关于如何在Flex项目中集成和使用Twaver库的示例代码、资源文件以及可能的文档。这通常包括: 1. **源代码**:官方Demo的AS3源码,开发者可以通过阅读和修改这些...

    twaver-flex中文用户手册

    《Twaver Flex中文用户手册》是一本详尽的指南,专为使用Twaver Flex图形库在Flex平台上构建可视化应用的开发者设计。Twaver是一个强大的工具,用于创建数据可视化、网络图表、流程图以及复杂的交互式应用程序。这个...

    TWaver Java 3.7 Developer Guide

    《TWaver Java 3.7 开发者指南》是一份详尽的技术文档,旨在为开发者提供使用TWaver Java 3.7版本进行网络、图表、数据管理和用户界面设计的全面指导。TWaver Java是一个功能丰富的可视化组件库,适用于构建复杂的...

    twaver-html5-5.9.0-api_html5_-5.9.0-api_twaver_

    Twaver是一个强大的数据可视化和网络建模工具,广泛应用于网络拓扑、流程图、组织结构等场景。5.9.0是该库的一个特定版本,可能包含了新功能、性能优化或错误修复。 描述简单明了,"twaver-html5-5.9.0-api"直接...

    TWaver .NET 开发指南+API(英文版)

    《TWaver .NET 开发指南+API(英文版)》是专为.NET开发者设计的一份重要参考资料,旨在帮助开发者深入理解和高效使用TWaver组件。TWaver是一个强大的数据可视化工具,尤其适用于创建复杂的图表、网络图以及地理信息...

    twaver 教程

    4. **License.txt**:文件包含了Twaver的许可协议,详细规定了软件的使用范围和条件,使用前务必仔细阅读。 5. **README.txt**:通常包含快速入门指南、注意事项或开发者的重要提示,对于初次接触Twaver的用户很有...

    Twaver-html5.zip

    Twaver学习案例的例子

    twaver flex 中文用户使用手册

    《Twaver Flex中文用户使用手册》是一份专为使用Twaver Flex产品的用户准备的详尽指南,旨在帮助用户深入理解和高效应用这款强大的图形化建模工具。Twaver Flex是一款基于Adobe Flex技术的可视化开发框架,它提供了...

Global site tag (gtag.js) - Google Analytics