jCharts 柱状图开发实例

下载jCharts jar包,网络上经常下载需要登录或者无法访问国外网站的情况,这里我给大家把源码包提供技术下。

下载请移步:http://download.csdn.net/detail/sl0007/6576101




/***********************************************************************************************
 * File Info: $Id: BarChartServlet.java,v 1.5 2003/04/19 01:41:27 nathaniel_auvil Exp $
 * Copyright (C) 2002
 * Author: Nathaniel G. Auvil
 * Contributor(s):
 *
 * Copyright 2002 (C) Nathaniel G. Auvil. All Rights Reserved.
 *
 * Redistribution and use of this software and associated documentation ("Software"), with or
 * without modification, are permitted provided that the following conditions are met:
 *
 * 1. Redistributions of source code must retain copyright statements and notices.
 * 	Redistributions must also contain a copy of this document.
 *
 * 2. Redistributions in binary form must reproduce the above copyright notice, this list of
 * 	conditions and the following disclaimer in the documentation and/or other materials
 * 	provided with the distribution.
 *
 * 3. The name "jCharts" or "Nathaniel G. Auvil" must not be used to endorse or promote
 * 	products derived from this Software without prior written permission of Nathaniel G.
 * 	Auvil.  For written permission, please contact nathaniel_auvil@users.sourceforge.net
 *
 * 4. Products derived from this Software may not be called "jCharts" nor may "jCharts" appear
 * 	in their names without prior written permission of Nathaniel G. Auvil. jCharts is a
 * 	registered trademark of Nathaniel G. Auvil.
 *
 * 5. Due credit should be given to the jCharts Project (http://jcharts.sourceforge.net/).
 *
 * THIS SOFTWARE IS PROVIDED BY Nathaniel G. Auvil AND CONTRIBUTORS ``AS IS'' AND ANY
 * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
 * jCharts OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
 ************************************************************************************************/

package com.jiuxing.mobile;

import java.awt.Color;
import java.awt.Font;
import java.awt.Paint;
import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.krysalis.jcharts.axisChart.AxisChart;
import org.krysalis.jcharts.axisChart.customRenderers.axisValue.renderers.ValueLabelPosition;
import org.krysalis.jcharts.axisChart.customRenderers.axisValue.renderers.ValueLabelRenderer;
import org.krysalis.jcharts.chartData.AxisChartDataSet;
import org.krysalis.jcharts.chartData.DataSeries;
import org.krysalis.jcharts.chartData.interfaces.IAxisDataSeries;
import org.krysalis.jcharts.encoders.ServletEncoderHelper;
import org.krysalis.jcharts.properties.AxisProperties;
import org.krysalis.jcharts.properties.BarChartProperties;
import org.krysalis.jcharts.properties.ChartProperties;
import org.krysalis.jcharts.properties.DataAxisProperties;
import org.krysalis.jcharts.properties.LegendProperties;
import org.krysalis.jcharts.properties.PropertyException;
import org.krysalis.jcharts.properties.util.ChartFont;
import org.krysalis.jcharts.types.ChartType;

public class BarChartServlet extends HttpServlet {
    // ---all of my charts serviced by this Servlet will have the same properties.
    private BarChartProperties barChartProperties;

    // ---all of my charts serviced by this Servlet will have the same properties.
    protected LegendProperties legendProperties;
    protected AxisProperties axisProperties;
    protected ChartProperties chartProperties;

    protected int width = 950;
    protected int height = 360;

    /**********************************************************************************************
	 *
	 **********************************************************************************************/
    public void init() {
	this.legendProperties = new LegendProperties();
	this.chartProperties = new ChartProperties();
	// 图形的XY轴的属性对象
	this.axisProperties = new AxisProperties(false);
	// 图表横坐标和纵坐标范围的字体,大小,颜色设置对象
	ChartFont axisScaleFont = new ChartFont(new Font(
		"Georgia Negreta cursiva", Font.PLAIN, 13), new Color(18, 189,
		255));
	axisProperties.getXAxisProperties().setScaleChartFont(axisScaleFont);
	axisProperties.getYAxisProperties().setScaleChartFont(axisScaleFont);
	// Bar图形的横坐标和纵坐标的标题字体和颜色 ,大小的设置对象
	ChartFont axisTitleFont = new ChartFont(new Font("Arial Narrow",
		Font.PLAIN, 14), new Color(18, 189, 255));
	axisProperties.getXAxisProperties().setTitleChartFont(axisTitleFont);
	axisProperties.getXAxisProperties().setShowEndBorder(false);
	axisProperties.getYAxisProperties().setTitleChartFont(axisTitleFont);
	axisProperties.getYAxisProperties().setShowEndBorder(false);
	DataAxisProperties dataAxisProperties = (DataAxisProperties) axisProperties
		.getYAxisProperties();

	try {
	    // 设置用户定义的纵轴纵坐标的 间隔范围
	    dataAxisProperties.setUserDefinedScale(0, 3000);
	} catch (PropertyException propertyException) {
	    propertyException.printStackTrace();
	}

	dataAxisProperties.setRoundToNearest(3);
	// 设置图形标题的字体,颜色,大小
	ChartFont titleFont = new ChartFont(new Font("Georgia Negreta cursiva",
		Font.PLAIN, 14), new Color(18, 189, 255));
	// 生成图像的属性对象
	this.chartProperties.setTitleFont(titleFont);
	// Bar图形的属性类
	this.barChartProperties = new BarChartProperties();

	ValueLabelRenderer valueLabelRenderer = new ValueLabelRenderer(false,
		false, true, -1);
	valueLabelRenderer.setValueLabelPosition(ValueLabelPosition.ON_TOP);
	// 是否设置显示的纵坐标标签垂直,true为是,flase为水平
	valueLabelRenderer.useVerticalLabels(true);
	barChartProperties.addPostRenderEventListener(valueLabelRenderer);

    }

    /**********************************************************************************************
	 *
	 **********************************************************************************************/
    public void service(HttpServletRequest req,
	    HttpServletResponse httpServletResponse) throws ServletException,
	    IOException {
	try {
	    // 设置横坐标标签
	    String[] xAxisLabels = { "1995", "1996", "1997", "1998", "1999",
		    "2000", "2001", "2002", "2003", "2004", "2005", "2006",
		    "2007", "2008", "2009", "2010", "2011", "2012", "2013",
		    "2014" };
	    // 设置横坐标的单位
	    String xAxisTitle = "Years";
	    // 设置纵坐标的标题
	    String yAxisTitle = "Problems";
	    // 设置图形的标题
	    String title = "Micro$oft At Work";
	    // 图形所需要的数据对象
	    IAxisDataSeries dataSeries = new DataSeries(xAxisLabels,
		    xAxisTitle, yAxisTitle, title);

	    // 设置条形数据
	    double[][] data = new double[][] { { 1500, 6880, 4510, 2600, 0,
		    1580, 0, 9555, 11000, 0, 7500, 5880, 3510, 2600,
		    1200, 1580, 9000, 8555, 9000, 3120 } };
	    // 条形区域 形示的标签
	    String[] legendLabels = { "8" };
//	    String[] legendLabels = null;
	    // 条形区域绘制的颜色设置对象
	    Paint[] paints = new Paint[] { new Color(18, 189, 255) };
	    dataSeries.addIAxisPlotDataSet(new AxisChartDataSet(data,
		    legendLabels, paints, ChartType.BAR,
		    this.barChartProperties));

	    // 产生一个 chart对象
	    AxisChart axisChart = new AxisChart(dataSeries,
		    this.chartProperties, this.axisProperties,
		    this.legendProperties, this.width, this.height);
	    // 输出设置好的chart图形
	    ServletEncoderHelper.encodeJPEG13(axisChart, 1.0f,
		    httpServletResponse);
	} catch (Throwable throwable) {
	    // HACK do your error handling here...
	    throwable.printStackTrace();
	}
    }
}


在上下优美的效果,很多可以继续优化



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值