JFreeChart Scatter Plot Lines

我正在尝试使用JFreeChart创建一个图形,但是它没有正确的线条。 它不是按我按顺序连接点,而是按照x值的顺序连接点。 我正在使用ChartFactory.createScatterPlot来创建绘图,使用XYLineAndShapeRenderer来设置可见的线条。

/ edit:sscce:

package test; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.plot.XYPlot; import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer; import org.jfree.data.xy.XYDataset; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; import org.jfree.ui.ApplicationFrame; public class PlotTest { private XYSeriesCollection dataset; public static void main (String[] args) { new PlotTest(); } public PlotTest () { dataset = new XYSeriesCollection(); XYSeries data = new XYSeries("data"); data.add(3, 2); //Point 1 data.add(1, 1); //Point 2 data.add(4, 1); //Point 3 data.add(2, 2); //Point 4 dataset.addSeries(data); showGraph(); } private void showGraph() { final JFreeChart chart = createChart(dataset); final ChartPanel chartPanel = new ChartPanel(chart); chartPanel.setPreferredSize(new java.awt.Dimension(500, 270)); final ApplicationFrame frame = new ApplicationFrame("Title"); frame.setContentPane(chartPanel); frame.pack(); frame.setVisible(true); } private JFreeChart createChart(final XYDataset dataset) { final JFreeChart chart = ChartFactory.createScatterPlot( "Title", // chart title "X", // x axis label "Y", // y axis label dataset, // data PlotOrientation.VERTICAL, true, // include legend true, // tooltips false // urls ); XYPlot plot = (XYPlot) chart.getPlot(); XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer(); renderer.setSeriesLinesVisible(0, true); plot.setRenderer(renderer); return chart; } } 

现在我希望程序以1-2-3-4的顺序连接点,这是我将它们添加到我的数据集的顺序。 但是我按照2-4的顺序将它们连接起来,按x值排序。

尝试这个:

  final XYSeries data = new XYSeries("data",false); 

XYSeries使用此构造XYSeries会禁用自动排序,如XYSeries API中所定义。

之前:

之前

后:

后

没有sscce很难说,但你可能会尝试从你的XYDataset实现中返回XYDataset 。 此外,它可能有助于知道应该给散点图中连接点的线赋予什么含义。