Problem to display the Bar Chart

A discussion forum for JFreeChart (a 2D chart library for the Java platform).
Locked
Rajnesh
Posts: 19
Joined: Thu Jan 03, 2008 8:48 am

Problem to display the Bar Chart

Post by Rajnesh » Sat Jan 05, 2008 9:08 am

Hi all
PLZ HELP ME
I want to create a bar chart using CreateXYBarChart() having XYPLot() but this show a line chart .I m very confused :? Here is my code
package chart;



import java.awt.Color;
import java.text.NumberFormat;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.labels.StandardXYToolTipGenerator;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.title.LegendTitle;
import org.jfree.data.xy.IntervalXYDataset;
import org.jfree.data.xy.IntervalXYZDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RectangleEdge;
import org.jfree.ui.RefineryUtilities;
import org.jfree.ui.VerticalAlignment;


public class BarChartDemo extends ApplicationFrame {

public BarChartDemo(final String title) {

super(title);

final IntervalXYDataset dataset = createDataset();
final JFreeChart chart = createChart(dataset);
final ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(chartPanel);

}

private IntervalXYDataset createDataset() {

final XYSeries series1 = new XYSeries("First");
series1.add(1.0, 1.0);
series1.add(2.0, 4.0);
series1.add(3.0, 3.0);
series1.add(4.0, 5.0);
series1.add(5.0, 5.0);
series1.add(6.0, 7.0);
series1.add(7.0, 7.0);
series1.add(8.0, 8.0);

final XYSeries series2 = new XYSeries("Second");
series2.add(1.0, 5.0);
series2.add(2.0, 7.0);
series2.add(3.0, 6.0);
series2.add(4.0, 8.0);
series2.add(5.0, 4.0);
series2.add(6.0, 4.0);
series2.add(7.0, 2.0);
series2.add(8.0, 1.0);

final XYSeries series3 = new XYSeries("Third");
series3.add(3.0, 4.0);
series3.add(4.0, 3.0);
series3.add(5.0, 2.0);
series3.add(6.0, 3.0);
series3.add(7.0, 6.0);
series3.add(8.0, 3.0);
series3.add(9.0, 4.0);
series3.add(10.0, 3.0);

final XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series1);
dataset.addSeries(series2);
dataset.addSeries(series3);

return dataset;

}
private IntervalXYDataset createDataset2() {
final XYSeries series = new XYSeries("Four");
series.add(1.0, 0.08);
series.add(2.0, 0.04);
series.add(3.0, 0.64);
series.add(4.0, 0.26);
series.add(5.0, 0.56);
series.add(6.0, 0.10);
series.add(7.0, 0.12);

final XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(series);
return dataset;
}


private JFreeChart createChart(final IntervalXYDataset dataset) {

// create the chart...
final JFreeChart chart = ChartFactory.createXYBarChart(
"Bar Chart", // chart title
"X",
false,// x axis label
"Y", // y axis label
dataset, // data
PlotOrientation.VERTICAL,
true, // include legend
true, // tooltips
false // urls
);

// NOW DO SOME OPTIONAL CUSTOMISATION OF THE CHART...
chart.setBackgroundPaint(Color.white);


// get a reference to the plot for further customisation...
final XYPlot plot = chart.getXYPlot();
plot.setDataset(1,createDataset2());
plot.mapDatasetToRangeAxis(1, 1);
// plot.setBackgroundPaint(Color.lightGray);
LegendTitle legend = (LegendTitle) chart.getLegend();
legend.setPosition(RectangleEdge.RIGHT);
legend.setVerticalAlignment(VerticalAlignment.TOP);
plot.setDomainGridlinePaint(Color.white);
plot.setRangeGridlinePaint(Color.white);

final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
final XYLineAndShapeRenderer renderer2 = new XYLineAndShapeRenderer();

renderer.setToolTipGenerator(new StandardXYToolTipGenerator());
plot.setRenderer(renderer);

// OPTIONAL CUSTOMISATION COMPLETED.
ValueAxis valAxis=(ValueAxis)plot.getDomainAxis();
valAxis.setRange(1.0,15.0);///////////Here we set the range of X Axis
valAxis=(ValueAxis)plot.getRangeAxis();
valAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
valAxis.setRange(0.0,25.0);//y Axis
// NumberAxis numAxis=(NumberAxis)plot.getRangeAxis();
NumberAxis numAxis=new NumberAxis("Value");
plot.setRangeAxis(1, numAxis);
numAxis.setRange(0.0,1.0);//Z Axis
numAxis.setNumberFormatOverride(NumberFormat.getPercentInstance());
//valAxis.set
return chart;

}


public static void main(final String[] args) {

final BarChartDemo demo = new BarChartDemo("Bar Chart");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);

}

}
plzzzzzz help me sort out this problem. Its urgent
Awaiting for ur Reply..........
Thanx in advance

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 » Mon Jan 07, 2008 1:04 pm

This code makes it a line chart:

Code: Select all

 final XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();

...

plot.setRenderer(renderer); 
David Gilbert
JFreeChart Project Leader

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

Rajnesh
Posts: 19
Joined: Thu Jan 03, 2008 8:48 am

Problem to display the Bar Chart

Post by Rajnesh » Tue Jan 08, 2008 5:57 am

Thanx for ur reply............ :)

Locked