In JFreeChart, I want to display multiple lines within the same range. However multiple series are not getting painted:
Code to reproduce:
import org.jfree.chart.ChartPanel;
import java.awt.Font;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryLabelPositions;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class LineChart_AWT extends ApplicationFrame {
public LineChart_AWT( String applicationTitle , String chartTitle ) {
super(applicationTitle);
JFreeChart lineChart = ChartFactory.createLineChart(
chartTitle,
"","",
createDataset(),
PlotOrientation.VERTICAL,
true,true,false);
CategoryPlot plot = (CategoryPlot) lineChart.getPlot();
plot.getRangeAxis().setAutoRange(true);
((NumberAxis)plot.getRangeAxis()).setAutoRangeIncludesZero(false);
plot.getDomainAxis().setCategoryLabelPositions(CategoryLabelPositions.UP_45);
plot.setDomainGridlinesVisible(true);
ChartPanel chartPanel = new ChartPanel( lineChart );
chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
setContentPane( chartPanel );
}
private DefaultCategoryDataset createDataset( ) {
DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
dataset.addValue(1.0,"TypeA", "8");
dataset.addValue(1.0,"TypeB", "8");
dataset.addValue(1.0,"TypeA","10");
dataset.addValue(1.0,"TypeA","11");
dataset.addValue(1.0,"TypeA","13");
dataset.addValue(2.0,"TypeA","16");
dataset.addValue(2.0,"TypeA","18");
dataset.addValue(2.0,"TypeB","19");
dataset.addValue(5.0,"TypeB","20");
return dataset;
}
public static void main( String[ ] args ) {
LineChart_AWT chart = new LineChart_AWT(
"JFreeChart demo" ,
"Series are not drawn onto each other");
chart.pack( );
RefineryUtilities.centerFrameOnScreen( chart );
chart.setVisible( true );
}
}
Why is typeB not painted from "8"?
If I comment out all of TypeA series, TypeB is displayed correctly:
How can I achieve to display both TypeA and TypeB onto each other if needed?
Thanks!