私は、その場所の場所と時間の温度を5秒ごとに返すデータベースにアクセスできます。
私は、x軸に時間をプロットする考えがあります。
おそらく、Javaスイングタイマーを使用すると、5秒ごとにグラフにデータを追加できます。
しかし、私はcreateDataset()でタイマーを追加することを考えたので実装する方法はわかりませんが、データセットを返すので、それを達成することはできません。
5秒ごとにどのようにグラフにデータを追加することができますか?ここ
は私のコードです:
import java.awt.Color;
import java.awt.BasicStroke;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
public class XYLineChart_AWT extends ApplicationFrame {
public XYLineChart_AWT(String applicationTitle, String chartTitle) {
super(applicationTitle);
JFreeChart xylineChart = ChartFactory.createXYLineChart(
chartTitle ,
"Time" ,
"Temperature" ,
createDataset() ,
PlotOrientation.VERTICAL ,
true , true , false);
ChartPanel chartPanel = new ChartPanel(xylineChart);
chartPanel.setPreferredSize(new java.awt.Dimension(560 , 367));
final XYPlot plot = xylineChart.getXYPlot();
XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer();
renderer.setSeriesPaint(0 , Color.RED);
renderer.setSeriesStroke(0 , new BasicStroke(4.0f));
plot.setRenderer(renderer);
setContentPane(chartPanel);
}
private XYDataset createDataset() {
final XYSeries temp = new XYSeries("Temperature");
//time = getTime(); //returns a float time in seconds.milliseconds
//temperature = getTemp(); //returns a number temperature
//I want to add data into temp every 5 seconds but i don't know how to do it
temp.add(1.0 , 1.0);
temp.add(2.0 , 4.0);
temp.add(3.0 , 3.0);
final XYSeriesCollection dataset = new XYSeriesCollection();
dataset.addSeries(temp);
return dataset;
}
public static void main(String[ ] args) {
XYLineChart_AWT chart = new XYLineChart_AWT("Temp",
"Temperature of some location");
chart.pack();
RefineryUtilities.centerFrameOnScreen(chart);
chart.setVisible(true);
}
}
ご回答いただきありがとうございますが、私はJFreeチャートを初めて使用していますので、上記で書いた正確なコードを使用しようとするとエラーになります。 http://i.imgur.com/hLxz3wg.png – fredjohnson
あなたの 'XYSeriesCollection'の' XYSeries'にアイテムを 'add()'することもできます。 –
私は自分のコードを変更しましたが、グラフに追加するのではなく、グラフを更新します。したがって、チャートには一度に1つのプロットしか含まれません。 https://pastebin.com/pfd2RY5r 5秒ごとにグラフを再作成するのではなく、代わりにどのように追加するのですか? – fredjohnson