Timeseries - percent value label

A discussion forum for JFreeChart (a 2D chart library for the Java platform).
Locked
dvicente72
Posts: 6
Joined: Wed Jun 27, 2007 8:03 am

Timeseries - percent value label

Post by dvicente72 » Wed Jun 27, 2007 8:09 am

Hi,

i try to create TimeSeriesChart with values from 0 to 1 which represent percentage values.

I try to set a label generator to display percentage value but it doesn't work.

Code: Select all


new StandardXYItemLabelGenerator(
                                                      StandardXYItemLabelGenerator.DEFAULT_ITEM_LABEL_FORMAT,
                                                      new SimpleDateFormat("dd/MM/yyyy") ,
                                                      NumberFormat.getPercentInstance( Locale.getDefault() ) ); ?

all my values are displayed in the label as 0.39 ....

how to display a "39%" label as done well with a bar chart ?

thanks for your help

david.gilbert
JFreeChart Project Leader
Posts: 11734
Joined: Fri Mar 14, 2003 10:29 am
antibot: No, of course not.
Contact:

Post by david.gilbert » Wed Jun 27, 2007 9:15 am

That should work. Did you add the label generator to the right renderer?
David Gilbert
JFreeChart Project Leader

:idea: Read my blog
:idea: Support JFree via the Github sponsorship program

dvicente72
Posts: 6
Joined: Wed Jun 27, 2007 8:03 am

Post by dvicente72 » Wed Jun 27, 2007 9:20 am

yes

i put my whole code :

Code: Select all


XYDataset dataset = (XYDataset)this.datasetStrategy.getDataset();
        report = ChartFactory.createTimeSeriesChart( this.datasetStrategy.getTitle(), // title
                                                     this.datasetStrategy.getXAxisLabel(), // x-axis label
                                                     this.datasetStrategy.getYAxisLabel(), // y-axis label
                                                     dataset, // data
                                                     true, // create legend?
                                                     true, // generate tooltips?
                                                     false // generate URLs?
        );

        report.setBackgroundPaint( Color.lightGray );
        XYPlot plot = report.getXYPlot();
        plot.setBackgroundPaint( Color.white );
        plot.setDomainGridlinePaint( Color.lightGray );
        plot.setRangeGridlinePaint( Color.lightGray );
        plot.setAxisOffset( new RectangleInsets( 5D, 5D, 5D, 5D ) );
        XYItemRenderer xyitemrenderer = plot.getRenderer();
        if ( xyitemrenderer instanceof XYLineAndShapeRenderer )
        {
            XYLineAndShapeRenderer renderer = (XYLineAndShapeRenderer) xyitemrenderer;
            renderer.setBaseShapesVisible( true );
            renderer.setBaseShapesFilled( true );

            renderer.setShapesVisible( true );
            renderer.setDrawOutlines( true );
            StandardXYItemLabelGenerator labelgenerator = new StandardXYItemLabelGenerator();
            if ( datasetStrategy instanceof CoberturaBarChartStrategy )
            {
                labelgenerator =
                    new StandardXYItemLabelGenerator(
                                                      StandardXYItemLabelGenerator.DEFAULT_ITEM_LABEL_FORMAT,
                                                      ( (AbstractTimeChartStrategy) this.datasetStrategy ).getTimePeriod().getDateFormat(),
                                                      NumberFormat.getPercentInstance( Locale.getDefault() ) );
            }

            renderer.setBaseItemLabelGenerator( labelgenerator );
            renderer.setItemLabelFont( new Font( "SansSerif", Font.BOLD, 10 ) );
            renderer.setBaseItemLabelsVisible( true );
            renderer.setPositiveItemLabelPosition( new ItemLabelPosition( ItemLabelAnchor.OUTSIDE10,
                                                                          TextAnchor.BASELINE_RIGHT ) );
        }
        
        Paint[] paints = this.datasetStrategy.getPaintColor();
        for (int i = 0; i < dataset.getSeriesCount() && i < paints.length; i++) {
            xyitemrenderer.setSeriesPaint(i, paints[i]);
            xyitemrenderer.setSeriesStroke(i, new BasicStroke(2.0f,
                    BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
        }
        plot.setRangeAxis( ((AbstractTimeChartStrategy)this.datasetStrategy).getRangeAxis() );
        DateAxis axis = new DateAxis();
        axis.setDateFormatOverride( ((AbstractTimeChartStrategy)this.datasetStrategy).getTimePeriod().getDateFormat() );
        axis.setLabel( this.datasetStrategy.getXAxisLabel() );
        axis.setTickUnit( getTickUnit(((AbstractTimeChartStrategy)this.datasetStrategy).getTimePeriod()) );
        
        if ( ( (AbstractTimeChartStrategy) this.datasetStrategy ).getStartDate() != null
                        && ( (AbstractTimeChartStrategy) this.datasetStrategy ).getEndDate() != null )
        {
            axis.setRangeWithMargins( new DateRange(( (AbstractTimeChartStrategy) this.datasetStrategy ).getStartDate(),
                           ( (AbstractTimeChartStrategy) this.datasetStrategy ).getEndDate() ));
           
        }
        plot.setDomainAxis( axis );


all my values in dataset are between 0.0 and 1.0

david.gilbert
JFreeChart Project Leader
Posts: 11734
Joined: Fri Mar 14, 2003 10:29 am
antibot: No, of course not.
Contact:

Post by david.gilbert » Wed Jun 27, 2007 9:25 am

Does this evaluate to true?

Code: Select all

if ( datasetStrategy instanceof CoberturaBarChartStrategy ) 
It would be better if you posted a small self-contained demo of the problem - then I wouldn't have to spend my time guessing what *might* be going wrong.
David Gilbert
JFreeChart Project Leader

:idea: Read my blog
:idea: Support JFree via the Github sponsorship program

dvicente72
Posts: 6
Joined: Wed Jun 27, 2007 8:03 am

Post by dvicente72 » Wed Jun 27, 2007 10:47 am

ok i'll do asap

dvicente72
Posts: 6
Joined: Wed Jun 27, 2007 8:03 am

Post by dvicente72 » Wed Jun 27, 2007 11:52 am

sorry for disturbance, it was an error of my share, it works very well, dit was the "if" which was not good

Code: Select all

if ( datasetStrategy instanceof CoberturaBarChartStrategy ) 
i tested the wrong class, so it was normal that the labelgenerator was never set

Locked