Ich habe einen Code geschrieben, der Koordinaten auf einen Zeichnungsbereich (JPanel
) darstellt. hier ist mein Code-Klasse:Wie füge ich eine Skala oder Achse einem Streudiagramm hinzu?
class POSCanvas extends JPanel {
private XYSeries pnts = new XYSeries("Position");
public POSCanvas() {
final ChartPanel chartPanel = createDemoPanel();
this.add(chartPanel, BorderLayout.CENTER);
}
private void update(double xnew, double ynew) {
pnts.add(new XYDataItem(xnew, ynew));
}
private ChartPanel createDemoPanel() {
JFreeChart jfreechart = ChartFactory.createScatterPlot(
"", "X", "Y", createSampleData(),
PlotOrientation.VERTICAL, true, true, false);
XYPlot xyPlot = (XYPlot) jfreechart.getPlot();
XYItemRenderer renderer = xyPlot.getRenderer();
NumberAxis domain = (NumberAxis) xyPlot.getDomainAxis();
int minX = (int)pnts.getMinX(); int maxX = (int)pnts.getMaxX();
if (minX < maxX){domain.setRange(minX, maxX);}
domain.setTickUnit(new NumberTickUnit(1));
NumberAxis range = (NumberAxis) xyPlot.getRangeAxis();
range.setTickUnit(new NumberTickUnit(1));
return new ChartPanel(jfreechart){
@Override
public Dimension getPreferredSize() {
return new Dimension(640, 480);
}
};
}
private XYDataset createSampleData() {
XYSeriesCollection xySeriesCollection = new XYSeriesCollection();
xySeriesCollection.addSeries(pnts);
return xySeriesCollection;
}
}
Das Problem ist, dass ich nicht den Bereich für die X-Achse hinzuzufügen, können zu sein scheinen. Hier ist die Ausgabe:
Ich verwende die domain.setRange()
Methode, aber es funktioniert nicht. Irgendeine Idee, wie man es repariert? Jede Hilfe würde geschätzt werden; Danke.
Ich habe zu JFreechart gewechselt. Es erstellt die Y-Achse, erstellt aber nicht die X-Achse. irgendeine Idee warum ist das? –
Was passiert, wenn Sie 'Domäne' nicht ändern? A [mcve] würde das Testen erleichtern. –
Es [sieht] (http://stackoverflow.com/q/36287510/230513) wie Sie es funktionierte; Sie können [Ihre eigene Frage beantworten] (http://meta.stackoverflow.com/q/17463/163188), oder Sie können diese Antwort akzeptieren, indem Sie auf das [leere Häkchen] klicken (http: //meta.stackoverflow. com/a/5235/163188) auf der linken Seite. – trashgod