JFreeChart Scatter Plot Lines
Je suis en train de créer un graphique avec JFreeChart, cependant elle n'est pas la bonne. Au lieu de relier les points dans l'ordre je les ai mis, il relie des points dans l'ordre de leurs valeurs de x. Je suis en utilisant ChartFactory.createScatterPlot pour créer l'intrigue et un XYLineAndShapeRenderer pour définir les lignes visibles.
/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;
}
}
Maintenant, je veux le programme de relier les points dans l'ordre 1-2-3-4, qui est l'ordre que j'ai ajouté à mon dataset. Mais je ne connecter afin 2-4-1-3, triés par x-valeur.
source d'informationauteur hvitedragonfire
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
À l'aide de ce constructeur pour
XYSeries
désactive autosort, tel que défini dans la XYSeries API.Avant:
Après:
En l'absence d'une sscce c'est dur à dire, mais vous pourriez essayer de retourner
DomainOrder.NONE
à partir de votre mise en œuvre deXYDataset
. En outre, il peut aider à savoir quel sens doit être donné à des lignes reliant les points dans un nuage de points.