1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
package pcprogram;
 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
import javax.swing.Timer;
import javax.swing.JPanel;
 
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.plot.XYPlot;
import org.jfree.data.time.Millisecond;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
 
/**
 * An example to show how we can create a dynamic chart.
*/
@SuppressWarnings("serial")
public class DynamicLineAndTimeSeriesChart extends ApplicationFrame 
implements ActionListener {
 
    /** The time series data. */
    private TimeSeries series;
 
    /** The most recent value added. */
    private double lastValue = 100.0;
 
    /** Timer to refresh graph after every 1/4th of a second */
    private Timer timer = new Timer(250this);
 
    /**
     * Constructs a new dynamic chart application.
     *
     * @param title  the frame title.
     */
    @SuppressWarnings("deprecation")
    public DynamicLineAndTimeSeriesChart(final String title) {
 
        super(title);
        this.series = new TimeSeries("Random Data", Millisecond.class);
 
        final TimeSeriesCollection dataset = new TimeSeriesCollection(this.series);
        final JFreeChart chart = createChart(dataset);
 
        timer.setInitialDelay(1000);
 
        //Sets background color of chart
        chart.setBackgroundPaint(Color.LIGHT_GRAY);
 
        //Created JPanel to show graph on screen
        final JPanel content = new JPanel(new BorderLayout());
 
        //Created Chartpanel for chart area
        final ChartPanel chartPanel = new ChartPanel(chart);
 
        //Added chartpanel to main panel
        content.add(chartPanel);
 
        //Sets the size of whole window (JPanel)
        chartPanel.setPreferredSize(new java.awt.Dimension(800500));
 
        //Puts the whole content on a Frame
        setContentPane(content);
 
        timer.start();
 
    }
 
    /**
     * Creates a sample chart.
     *
     * @param dataset  the dataset.
     *
     * @return A sample chart.
     */
    private JFreeChart createChart(final XYDataset dataset) {
        final JFreeChart result = ChartFactory.createTimeSeriesChart(
            "Dynamic Line And TimeSeries Chart",
            "Time",
            "Value",
            dataset,
            true,
            true,
            false
        );
 
        final XYPlot plot = result.getXYPlot();
 
        plot.setBackgroundPaint(new Color(0xffffe0));
        plot.setDomainGridlinesVisible(true);
        plot.setDomainGridlinePaint(Color.lightGray);
        plot.setRangeGridlinesVisible(true);
        plot.setRangeGridlinePaint(Color.lightGray);
 
        ValueAxis xaxis = plot.getDomainAxis();
        xaxis.setAutoRange(true);
 
        //Domain axis would show data of 60 seconds for a time
        xaxis.setFixedAutoRange(60000.0);  // 60 seconds
        xaxis.setVerticalTickLabels(true);
 
        ValueAxis yaxis = plot.getRangeAxis();
        yaxis.setRange(0.0300.0);
 
        return result;
    }
    /**
     * Generates an random entry for a particular call
 made by time for every 1/4th of a second.
     *
     * @param e  the action event.
     */
    public void actionPerformed(final ActionEvent e) {
 
        final double factor = 0.+ 0.2*Math.random();
        this.lastValue = this.lastValue * factor;
 
        final Millisecond now = new Millisecond();
        this.series.add(new Millisecond(), this.lastValue);
 
        System.out.println("Current Time in Milliseconds = " + now.toString()+", Current Value : "+this.lastValue);
    }
 
    /**
     * Starting point for the dynamic graph application.
     *
     * @param args  ignored.
     */
    public static void main(final String[] args) {
 
        final DynamicLineAndTimeSeriesChart demo = new DynamicLineAndTimeSeriesChart("Dynamic Line And TimeSeries Chart");
        demo.pack();
        RefineryUtilities.centerFrameOnScreen(demo);
        demo.setVisible(true);
 
    }
 
}  


cs




랜덤수로 뽑아내는 실시간 선형 그래프 예제이다. 이걸로 지지고 복고 해야지~


+ Recent posts