JfreeChart实现人口金字塔图

产品开发中,需要做一个人口金字塔图,参考了一下jfreechart demo中的图,发现图中的负值仍显示负值,不符合要求。于是仔细分析了一下jfreechart的源代码,发现jfreechart是使用NumberFormat来显示坐标轴的刻度标签的,于是继承了NumberFormat类来完成该功能:

import java.text.FieldPosition;
import java.text.NumberFormat;
import java.text.ParsePosition;

/**
 * 该类将金字塔的负值按正值显示
 * @author jekey
 * @version 1.0
 * @date 2010-12-01
 */
public class NavFormat  extends NumberFormat{

	@Override
	public StringBuffer format(double number, StringBuffer toAppendTo,
			FieldPosition pos) {
		// TODO Auto-generated method stub
		if(number<0){
			number=number*-1;
		}
		return toAppendTo.append(number);
	}

	@Override
	public StringBuffer format(long number, StringBuffer toAppendTo,
			FieldPosition pos) {
		// TODO Auto-generated method stub
		if(number<0){
			number=number*-1;//此处将负值显示为正
		}
		return toAppendTo.append(number);
	}

	@Override
	public Number parse(String source, ParsePosition parsePosition) {
		// TODO Auto-generated method stub
		return null;
	}

}

 人口金字塔类见附件(jfreechart版本13):

效果上图:JfreeChart实现人口金字塔图_第1张图片

 

你可能感兴趣的:(jfreechart,人口金字塔)