This can be worked around by using separate Datasets, but I'd like to know if this is a bug, or if I'm setting the Renderer/Dataset incorrectly for the behavior I'm looking for.
Code: Select all
public class DrawingOrder extends ApplicationFrame
{
JPanel chartPanel;
public DrawingOrder()
{
super( "DrawingOrder" );
XYDataset data = createData();
JFreeChart chart = createChart( data );
chartPanel = new ChartPanel( chart );
chartPanel.setPreferredSize( new Dimension( 600, 400 ) );
setContentPane( chartPanel );
}
private JFreeChart createChart( XYDataset dataSet )
{
JFreeChart chart = ChartFactory.createXYLineChart( "Drawing Order", "X", "Y", dataSet, PlotOrientation.VERTICAL, true, false, false );
XYLineAndShapeRenderer renderer = ( XYLineAndShapeRenderer ) chart.getXYPlot().getRenderer();
renderer.setSeriesLinesVisible( 1, false );
renderer.setSeriesShapesVisible( 1, true );
renderer.setSeriesShapesVisible( 0, true );
return chart;
}
private XYDataset createData()
{
XYSeriesCollection dataSet = new XYSeriesCollection();
XYSeries lineSeries = new XYSeries( 0, false, true );
lineSeries.add( 0, 0 );
lineSeries.add( 4, 4 );
dataSet.addSeries( lineSeries );
XYSeries pointSeries = new XYSeries( 1, false, true );
pointSeries.add( 0, 0 );
pointSeries.add( 1, 1 );
pointSeries.add( 2, 2 );
pointSeries.add( 3, 3 );
pointSeries.add( 4, 4 );
dataSet.addSeries( pointSeries );
return dataSet;
}
public static void main( String[] args )
{
SwingUtilities.invokeLater( () ->
{
DrawingOrder drawingOrder = new DrawingOrder();
drawingOrder.pack();
drawingOrder.setVisible( true );
} );
}
}