-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAnalyticsMultiChart.java
More file actions
89 lines (73 loc) · 3.02 KB
/
Copy pathAnalyticsMultiChart.java
File metadata and controls
89 lines (73 loc) · 3.02 KB
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
import java.awt.*;
import java.util.LinkedList;
import org.knowm.xchart.XChartPanel;
import org.knowm.xchart.XYChart;
import javax.swing.*;
import org.knowm.xchart.*;
import org.knowm.xchart.style.markers.SeriesMarkers;
/**
* Creates a real-time chart using SwingWorker
*/
public class AnalyticsMultiChart {
public JPanel population_chart_panel;
public XYChart population_chart;
public JFrame chart_frame;
public TumoralGrowth CA1Dref;
private String chart_title;
private LinkedList<Double>[] fifo_population;
private XYChart createChart(String chart_title, String x_axis_name, String y_axis_name) {
XYChart chart;
chart = new XYChartBuilder()
.title(chart_title).xAxisTitle(x_axis_name)
.yAxisTitle(y_axis_name).width(600).height(300).build();
chart.getStyler().setLegendVisible(true);
chart.getStyler().setXAxisTicksVisible(true);
chart.getStyler().setDefaultSeriesRenderStyle(XYSeries.XYSeriesRenderStyle.Line);
return chart;
}
AnalyticsMultiChart(String chart_title, String x_axis_name, String y_axis_name) {
this.chart_title = chart_title;
population_chart = createChart(chart_title, x_axis_name, y_axis_name);
}
public void setRef(TumoralGrowth ref) {
CA1Dref = ref;
}
public void getDataPopulation() {
fifo_population = CA1Dref.getPopulation();
double[][] array = new double[CA1Dref.states_number][fifo_population[0].size()];
for (int j = 0; j < CA1Dref.states_number; j++) {
for (int i = 0; i < fifo_population[j].size(); i++)
array[j][i] = fifo_population[j].get(i)+0.0;
population_chart.updateXYSeries("state "+(j),null, array[j], null);
}
}
public void createSeries() {
int[] initialValues = CA1Dref.getInitialPopulation();
if(population_chart.getSeriesMap().size()<1)
for (int i = 0; i < CA1Dref.states_number ; i++) {
population_chart.addSeries("state "+(i),new double[]{0}, new double[]{initialValues[i]})
.setXYSeriesRenderStyle(XYSeries.XYSeriesRenderStyle.Line).setMarker(SeriesMarkers.NONE);
}
}
public void plot() {
getDataPopulation();
population_chart_panel.revalidate();
population_chart_panel.repaint();
}
public void show() {
population_chart_panel = new XChartPanel(population_chart);
chart_frame = new JFrame("Charts");
GridLayout layout = new GridLayout(1,1);
chart_frame.setLayout(layout);
chart_frame.add(population_chart_panel);
chart_frame.setSize(600,600);
chart_frame.setMaximumSize(new Dimension(200,600));
chart_frame.setAlwaysOnTop(true);
chart_frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
chart_frame.setTitle(chart_title);
chart_frame.setOpacity(1);
chart_frame.setBackground(Color.WHITE);
chart_frame.setVisible(true);
chart_frame.pack();
}
}