A discussion forum for JFreeChart (a 2D chart library for the Java platform).
-
dvicente72
- Posts: 6
- Joined: Wed Jun 27, 2007 8:03 am
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?
-
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.
-
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