From: Daniel H. <Dan...@di...> - 2003-07-31 18:40:29
|
Being a newbie to the JCharts, I am having difficulty getting a graph to = correctly display multiple lines of data, and have not been able to find = an example that does this. I see http://jcharts.sourceforge.net/samples/line.html shows a sample, = but no code is provided. I have played/modifed the code from ComboChartServlet example, where I = simplied added another data series, but this too fail, unless the second = data series is configured to render using ChartType.BAR The modified service method is shown below... If I modify the one of the lines: dataSeries.addIAxisPlotDataSet( new AxisChartDataSet( data, = legendLabels, paints, ChartType.LINE, this.lineChartProperties ) ); to dataSeries.addIAxisPlotDataSet( new AxisChartDataSet( data, = legendLabels, paints, ChartType.BAR, this.barChartProperties ) ); it will render this series correctly as a bar chart, and the other as a = line chart. But I cannot get them both to render as lines..what gives? I must be missing something....any suggestions would be greatly = appreciated --- service() method in question ---- public void service( HttpServletRequest req, HttpServletResponse = httpServletResponse ) throws ServletException, IOException { try { String[] xAxisLabels =3D {"1995", "1996", "1997", "1998", "1999", = "2000", "2001", "2002", "2003", "2004"}; String xAxisTitle =3D "Years"; String yAxisTitle =3D "Problems"; String title =3D "Micro$oft At Work"; IAxisDataSeries dataSeries =3D new DataSeries( xAxisLabels, = xAxisTitle, yAxisTitle, title ); double[][] data =3D new double[][]{{1500, 6880, 4510, 2600, 1200, = 1580, 8000, 4555, 4000, 6120}}; double[][] data2 =3D new double[][]{{2500, 7880, 5510, 8600, 2200, = 2580, 9000, 5555, 3000, 1120}}; String[] legendLabels =3D {"Bugs"}; String[] legendLabels2 =3D {"tests"}; Paint[] paints =3D new Paint[]{Color.blue.darker()}; Paint[] linePaints =3D new Paint[]{Color.green}; dataSeries.addIAxisPlotDataSet( new AxisChartDataSet( data, = legendLabels, paints, ChartType.LINE, this.lineChartProperties ) ); dataSeries.addIAxisPlotDataSet( new AxisChartDataSet( data2, = legendLabels2, linePaints, ChartType.LINE, this.lineChartProperties ) ); //dataSeries.addIAxisPlotDataSet( new AxisChartDataSet( data, = legendLabels, linePaints, ChartType.LINE, this.lineChartProperties ) ); AxisChart axisChart =3D new AxisChart( dataSeries, = this.chartProperties, this.axisProperties, this.legendProperties, = this.width, this.height ); ServletEncoderHelper.encodeJPEG13( axisChart, 1.0f, = httpServletResponse ); } catch( Throwable throwable ) { //HACK do your error handling here... throwable.printStackTrace(); } } ----- full servlet code below ----- /************************************************************************= *********************** * File Info: $Id: ComboChartServlet.java,v 1.3 2003/03/14 03:23:23 = nathaniel_auvil Exp $ * Copyright (C) 2000 * 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 nat...@us... * * 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 org.jCharts.demo.simpleServlet; import org.jCharts.axisChart.AxisChart; import org.jCharts.chartData.AxisChartDataSet; import org.jCharts.chartData.DataSeries; import org.jCharts.chartData.interfaces.IAxisDataSeries; import org.jCharts.encoders.ServletEncoderHelper; import org.jCharts.properties.*; import org.jCharts.properties.util.ChartFont; import org.jCharts.types.ChartType; import javax.servlet.ServletException; import javax.servlet.http.*; import java.awt.*; import java.io.IOException; public class ComboChartServlet extends HttpServlet { //---all of my charts serviced by this Servlet will have the same = properties. private LineChartProperties lineChartProperties; //---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 =3D 550; protected int height =3D 360; = /************************************************************************= ********************** * = *************************************************************************= *********************/ public void init() { this.legendProperties =3D new LegendProperties(); this.chartProperties =3D new ChartProperties(); this.axisProperties =3D new AxisProperties( false ); ChartFont axisScaleFont =3D new ChartFont( new Font( "Georgia Negreta = cursiva", Font.PLAIN, 13 ), Color.black ); axisProperties.getXAxisProperties().setScaleChartFont( axisScaleFont = ); axisProperties.getYAxisProperties().setScaleChartFont( axisScaleFont = ); ChartFont axisTitleFont =3D new ChartFont( new Font( "Arial Narrow", = Font.PLAIN, 14 ), Color.black ); axisProperties.getXAxisProperties().setTitleChartFont( axisTitleFont = ); axisProperties.getYAxisProperties().setTitleChartFont( axisTitleFont = ); ChartFont titleFont =3D new ChartFont( new Font( "Georgia Negreta = cursiva", Font.PLAIN, 14 ), Color.black ); this.chartProperties.setTitleFont( titleFont ); Stroke[] strokes =3D {LineChartProperties.DEFAULT_LINE_STROKE}; Shape[] shapes =3D {PointChartProperties.SHAPE_DIAMOND}; this.lineChartProperties =3D new LineChartProperties( strokes, shapes = ); this.barChartProperties =3D new BarChartProperties(); } = /************************************************************************= ********************** * = *************************************************************************= *********************/ public void service( HttpServletRequest req, HttpServletResponse = httpServletResponse ) throws ServletException, IOException { try { String[] xAxisLabels =3D {"1995", "1996", "1997", "1998", "1999", = "2000", "2001", "2002", "2003", "2004"}; String xAxisTitle =3D "Years"; String yAxisTitle =3D "Problems"; String title =3D "Micro$oft At Work"; IAxisDataSeries dataSeries =3D new DataSeries( xAxisLabels, = xAxisTitle, yAxisTitle, title ); double[][] data =3D new double[][]{{1500, 6880, 4510, 2600, 1200, = 1580, 8000, 4555, 4000, 6120}}; double[][] data2 =3D new double[][]{{2500, 7880, 5510, 8600, 2200, = 2580, 9000, 5555, 3000, 1120}}; String[] legendLabels =3D {"Bugs"}; String[] legendLabels2 =3D {"tests"}; Paint[] paints =3D new Paint[]{Color.blue.darker()}; Paint[] linePaints =3D new Paint[]{Color.green}; dataSeries.addIAxisPlotDataSet( new AxisChartDataSet( data, = legendLabels, paints, ChartType.LINE, this.lineChartProperties ) ); // dataSeries.addIAxisPlotDataSet( new AxisChartDataSet( data, = legendLabels, paints, ChartType.BAR, this.barChartProperties ) ); dataSeries.addIAxisPlotDataSet( new AxisChartDataSet( data2, = legendLabels2, linePaints, ChartType.LINE, this.lineChartProperties ) ); AxisChart axisChart =3D new AxisChart( dataSeries, = this.chartProperties, this.axisProperties, this.legendProperties, = this.width, this.height ); ServletEncoderHelper.encodeJPEG13( axisChart, 1.0f, = httpServletResponse ); } catch( Throwable throwable ) { //HACK do your error handling here... throwable.printStackTrace(); } } } |