用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

 

 

 

被忽视的TWaver功能(1) 应客户需求写个Demo,Demo中包含一些常用的功能,包括解析JSON数据生成TWaver中的网元和连线,网元右下角带上不同标识的小图标,连线需要是二次曲线,弹出菜单和信息板,跟大家分享下。 阅读详情

相关推荐

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

TWaver HTML5(以下简称TWaver)使用HTML5技术和javascript语言,可在支持HTML5的浏览器上进行绘图。 使用TWaver前,需熟悉几个基本概念:图元(Element)、容器(DataBox)和画布(Network)。 图元:图形中的各种基本元素,如节点(Node)、连线(Link)等; 容器:图元都统一放置在一个容器(DataBox)中进行管理,如同“装鸡蛋的篮子”一样。它负责图元的增/删/改/查等管理操作; 画布:图元最终都绘制在画布(Network)组件上。Network是最终用户看到的图形组件,负责图形画面的具体绘制和交互;

twaver API笔记

twaver.Alarm : 告警对象存储, 在告警容器中,告警容器是网元的一部分,用于管理告警对象,每一个告警都可以设置关联网元Id twaver.AlarmBox: 告警容器对象,告警存在网元容器中,作为网元容器的一部分,管理网元容器中所有告警对象 twaver.AlarmElementMapping:告警网元映射对象,定义网元映射关系,一般告警和网元是一对一关系,需要达到一...

weixin_30955617的博客 907

基于TWaver实现的3D机房Demo

TWaver是基于WebGL3D一个框架,可以使用其框架进行web3d的开发,这里贴上官方的一个小案例,可以参照使用。

Twaver-HTML5基础学习(17)子网(SubNetwork)

Twaver-HTML5基础学习(17)子网(SubNetwork)

见贤思齐焉,见不贤内自省 588

twaver java 4.5.0

TWaver-java的库TWaver.jar

EChartsX是ECharts团队推出的全新3D可视化库

ECharts-X是ECharts团队推出的全新 3D 可视化库,它是基于 ECharts 的扩展,底层深度整合了 WebGL 库QTEK和 Canvas2D 库ZRender。

认识TWaver

一、    概念介绍         TWaver是美国Serva Software公司的产品,是应用最为广泛的电信专业图形界面开发工具包,在电信行业应用非常广泛。TWaver关注于数据的图形展示,它是面向开发人员的,需要进行二次开发。         TWaver的图形组件库中提供了拓扑组件、地图组件、设备图组件,以及表格、树图、属性表、图表等丰富的通用图形界面组件,为电信运营支撑系统(OS

黄爱岗廊坊师范学院信息技术提高班 第七期 2234

twaverJavaAPI

twaver Java的API使用说明,非常全。包括jar包都在

用TWaver Java制作精美的图层叠加图

在TWaver的各个使用手册,文档和Demo中我们可以看到,TWaver提供了Layer的概念,就是图层,这与一些制图软件也有几分相似。在实际应用中也是比较的多。比如TWaver的Demo中有TWaver水印的字样,就是通过使用的TWaver层,将带有水印文字的图层自于最上方并不可选中。 下面我们再通过一个实际的例子具体来看看TWaver Layer的叠加效果,先上最终效果图: 这是一个使

徐来的专栏 1348

twaver-api

twaver4.3.6版本的api,可以本地阅读,不需要去官网上看了,方便点。

【HSCNN解析】HSCNN:从欠采样光谱图重建高光谱图的CNN网络

本文介绍HSCNN,是一个将欠采样光谱图重建为高光谱图的纯CNN网络,2017年提出。

上个大学哪有不疯的?硬撑罢了! 1622

常用可视化图形介绍

Fusionchart图形 zome Line chart使用滚动条和zoom显示大量数据:Zoom: 实现对某一段的放大,pin: 拖动滚动条时,该段在屏幕上,用于和其他段的比较 column 3D 真正的可交互的3d图形 Combination Single Y或者Dual Y. 实现X轴相同Y相同或不同内容的关联组合。 horizontal bar chart用于显示 x轴标签比较长的; plot chart用于表示落在某个区域的数目(如连接数),可以用颜色和形状表示(x,y,m,n)四元组

dananhai381的专栏 7226

无痛安装及初始配置 PHP 8.0.3 + Apache 2.4 + MySQL 8.0

PHP 8.0.3 + Apache 2.4 + MySQL 8.0MySQL 8.0.23 安装下载安装配置环境变量初始化MySQLPHP8.0.3 安装下载安装配置环境变量Apache 2.4 安装下载安装启动 MySQL 8.0.23 安装 下载 到官方网站下载:https://dev.mysql.com/downloads/mysql/ 目前的最新版本是MySQL 8.0.23 在Windows上有两种安装方式,一个是zip压缩文件解压然后配置,另一个是图像化界面安装。 这里选择第一种方法安装:

Kuang Da's Blog 6208

java twaver_《TWaver Java开发手册》.pdf

《TWaver Java开发手册》.pdfTWaver® Java开发手册Version 3.7Dec 2010Serva Softwareinfo@PO Box 8143, Wichita Falls, Texas, USA 76307For more information about Serva Software and TWaver please visit the web site a...

weixin_33445930的博客 356

基于FPGA的DDR学习——1.基础知识

⚪DDR2(Double Data Rate2)SDRAM是由JEDEC(电子设备工程联合委员会)开发的第三代SDRAM内存技术标准,1.8V工作电压,240线接口,提供了相较于DDR SDRAM更高的运行效能与更低的电压,同样采用在时钟的上升/下降沿同时进行数据传输的基本方式,但拥有两倍于上一代DDR内存预读取能力(即4bit数据预取能力),其常见的频率规范有DDR2 400\533\667\800\1066\1333等,总线频率553MHZ的DDR2内存只需133MHZ的工作频率。

qq_44932488的博客 2070

电机系列(1) - foc最基本原理、clark变换 、park变换、附代码

什么是FOC? FOC(Field-Oriented Control),直译是磁场定向控制,也被称作矢量控制 (VC,Vector Control) ,是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最优方法之一。FOC旨在通过精确地控制磁场大小与方向,使得电机的运动转矩平稳、噪声小、效率高,并且具有高速的动态响应。 简单来说就是,FOC是一种对无刷电机的驱动控制方法,它可以让我们对无刷电机进行 “像素级” 控制,实现很多传统电机控制方法所无法达到的效果。 因为所谓的“矢量控制”其实就是

nepqiu的博客 7万+

java twaver_TWaver 2.0 发布,附在线demo 截图

SERVA Software announced TWaver 2.0 now available for production use. TWaver 2.0 delivers two new product branches, TWaver Web and TWaver GIS. With the solutions, developers can extend their OSS appli...

weixin_27252001的博客 248

相位偏折PMD全栈技术拆解 | 四步相移解算+梯度积分形貌重建,助力镜面工件微米级缺陷高精度稳定检测

工业精密检测领域中,高反光镜面类工件长期存在检测瓶颈,涵盖汽车高亮车漆、半导体抛光晶圆、光学透镜、精密抛光模具、玻璃盖板等主流产品。传统2D机器视觉仅能识别表面明显污渍、大尺寸破损,完全无法捕捉微米级划痕、凹坑、橘皮、曲面微形变等微观缺陷;常规线激光3D、普通结构光3D检测设备,面对镜面材质会产生严重镜面反射杂光,激光条纹、结构光图案完全失真,必须喷涂显影粉辅助检测,不仅破坏工件表面完整性,还无法适配自动化量产产线,检测效率与良率极低。

getusushu的博客 543

twaver 一个java图形开发框架 mark一下

[url=http://www.servasoftware.com/twaver.php]http://www.servasoftware.com/twaver.php[/url] [url=http://www.flickr.com/photos/lich0079/4464284822/][img]http://farm5.static.flickr.com/4065/4464284822...

任香980101 240

【OpenCV实战】简洁易懂的车牌号识别Python+OpenCV实现“超详解”(含代码)

简洁易懂的车牌号识别Python实现(含代码)1、整体思路2、代码详解 1、整体思路 2、代码详解

qq_40784418的博客 9万+

【WRF-GHG 教程第一期】概述(Overview)

概述(Overview)

WW、forever的博客 511

当ECharts碰到TWaver

百度公司的ECharts发展迅速,已经成为HTML5 Chart的佼佼者,这让大家骄傲:中国人终于也有世界级的开源通用UI产品了。正如其网站所说,它是百度的,是中国的,也是世界的。想想那些年,我们追逐感慨过的chart产品,fusionchart、highchart等等不计其数,随着HTML5的迅速普及和ECharts的疯狂发展,大家可以忘掉那些产品了。其他商业chart产品基本上也离颤抖中关门的日子不远了

TWaver可视化 2817

【ArcGIS微课1000例】0118:一文讲清楚tif(geotiff)栅格数据格式

TIFF(Tagged Image File Format)是一种常见的图像文件格式,它被广泛用于存储和传输各种类型的图像数据。图像存储:TIFF格式可以存储多通道的位图图像,包括灰度图、彩色图和透明度图等。它支持不同的像素深度,可以是8位、16位、24位或32位等。因此,TIFF格式非常适合存储高质量的图像数据,包括照片、卫星图像、医学影像等。无损压缩:TIFF格式支持无损压缩,这意味着图像可以被压缩而无需损失任何像素信息。这种压缩方式可以减小文件大小,而不会降低图像的质量。

智慧空间实验室 2821

TWaver的Chart图

package com.chart; import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; imp...

徐彬的进行曲 163

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: 关注细节-TWaver Android
下一篇: 如何允许WebGL从本地载入资源
subnetwork
博客等级 码龄17年 17粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值