Hallo Java Gemeinde,
Wir arbeiten zurzeit in der Uni an einem Projekt indem wir Elektrotechnik und Programmierung verbinden indem die Technik durch ein Gui gesteuert wird. In diesem soll auch ein Diagramm sein das die Volt am Lüfter und die Höhe des Balls aufzeichnet.
Ich denke das sollte gelöst werden doch plots die immer mit dem neuen Wert auch neu gezeichnet werden. Nun zerbreche ich mir den Kopf da ich es nicht schaffe die Plots einzeln hintereinander zeichnen zu lassen. Hier ist mein Testcode, die random und random2 werden nachher mit den Messwerten gefüllt.
Dies gibt nun auch ein Diagramm aus wie es soll aber ich hab keinen Plan
wie ich das nun "Echtzeit" laufen lasse
Wir arbeiten zurzeit in der Uni an einem Projekt indem wir Elektrotechnik und Programmierung verbinden indem die Technik durch ein Gui gesteuert wird. In diesem soll auch ein Diagramm sein das die Volt am Lüfter und die Höhe des Balls aufzeichnet.
Ich denke das sollte gelöst werden doch plots die immer mit dem neuen Wert auch neu gezeichnet werden. Nun zerbreche ich mir den Kopf da ich es nicht schaffe die Plots einzeln hintereinander zeichnen zu lassen. Hier ist mein Testcode, die random und random2 werden nachher mit den Messwerten gefüllt.
Java:
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CombinedDomainXYPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class CombinedXYPlotDemo1 extends ApplicationFrame {
/**
*
*/
double random;
double random2;
int x;
int i = 0;
private static final long serialVersionUID = 1L;
/**
* Constructs a new demonstration application.
*
* @param title the frame title.
*
*/
public CombinedXYPlotDemo1(final String title) throws Exception {
super(title);
final JFreeChart chart = createCombinedChart();
final ChartPanel panel = new ChartPanel(chart, true, true, true, false, true);
panel.setPreferredSize(new java.awt.Dimension(500, 270));
setContentPane(panel);
}
/**
* Creates a combined chart.
*
* @return the combined chart.
* @throws Exception
*
*/
private JFreeChart createCombinedChart() throws Exception {
// create subplot 1...
final XYDataset data1 = createDataset1();
final XYItemRenderer renderer1 = new StandardXYItemRenderer();
final NumberAxis rangeAxis1 = new NumberAxis("Spannung V [V]");
final XYPlot subplot1 = new XYPlot(data1, null, rangeAxis1, renderer1);
subplot1.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
// parent plot...
final CombinedDomainXYPlot plot = new CombinedDomainXYPlot(new NumberAxis("Zeit t [s]"));
plot.setGap(10.0);
// add the subplots...
plot.add(subplot1, 1);
plot.setOrientation(PlotOrientation.VERTICAL);
// return a new chart containing the overlaid plot...
return new JFreeChart("CombinedDomainXYPlot Demo",
JFreeChart.DEFAULT_TITLE_FONT, plot, true);
}
/**
* Creates a sample dataset.
*
* @return Series 1.
* @throws Exception
*
*/
private XYDataset createDataset1() throws Exception {
// create dataset 1...
final XYSeries series1 = new XYSeries("Lüftergeschwindigkeit");
final XYSeries series2 = new XYSeries("Ballhöhe");
final XYSeriesCollection collection = new XYSeriesCollection();
collection.addSeries(series1);
collection.addSeries(series2);
while( i <= 45){
random = Math.random() * 5;
random2 = Math.random() * 12;
series1.addOrUpdate(i, random);
series2.addOrUpdate(i, random2);
i++;
}
//}
return collection;
}
/**
* Creates a sample dataset.
*
* @return Series 2.
*/
/*private XYDataset createDataset2() {
// create dataset 2...
final XYSeries series2 = new XYSeries("Series 3");
series2.add(10.0, 16853.2);
series2.add(20.0, 19642.3);
series2.add(30.0, 18253.5);
series2.add(40.0, 15352.3);
series2.add(50.0, 13532.0);
series2.add(100.0, 12635.3);
series2.add(110.0, 13998.2);
series2.add(120.0, 11943.2);
series2.add(130.0, 16943.9);
series2.add(140.0, 17843.2);
series2.add(150.0, 16495.3);
series2.add(160.0, 17943.6);
series2.add(170.0, 18500.7);
series2.add(180.0, 19595.9);
return new XYSeriesCollection(series2);
}
*/
/**
* Starting point for the demonstration application.
*
* @param args ignored.
*
*/
public static void main(final String[] args) throws Exception {
final CombinedXYPlotDemo1 demo = new CombinedXYPlotDemo1("!;!;!;!;!;!;!;!;!;!;!;!");
demo.pack();
RefineryUtilities.centerFrameOnScreen(demo);
demo.setVisible(true);
}
}
Dies gibt nun auch ein Diagramm aus wie es soll aber ich hab keinen Plan