forked from nus-cs2103-AY1920S1/addressbook-level3
-
Notifications
You must be signed in to change notification settings - Fork 5
/
GraphChart.java
63 lines (54 loc) · 1.96 KB
/
GraphChart.java
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
package seedu.moneygowhere.ui;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.logging.Logger;
import javafx.fxml.FXML;
import javafx.scene.chart.CategoryAxis;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.scene.layout.Pane;
import javafx.scene.layout.Region;
import seedu.moneygowhere.commons.core.LogsCenter;
/**
* An UI component that displays spending in a line graph.
*/
public class GraphChart extends UiPart<Region> {
private static final Logger logger = LogsCenter.getLogger(GraphChart.class);
private static final String FXML = "GraphChart.fxml";
@FXML
private Pane graphPaneView;
/**
* Construct graph chart
*
* @param data to populate graph
*/
public GraphChart(LinkedHashMap<String, Double> graphData) {
super(FXML);
loadData(graphData);
}
/**
* Loads graph data into a line chart for display.
* @param graphData
*/
public void loadData(LinkedHashMap<String, Double> graphData) {
CategoryAxis xAxis = new CategoryAxis();
xAxis.setLabel("Day");
NumberAxis yAxis = new NumberAxis();
yAxis.setLabel("Amount spent ($)");
LineChart<String, Number> spendingChart = new LineChart<>(xAxis, yAxis);
spendingChart.setTitle("Graph");
XYChart.Series<String, Number> series = new XYChart.Series<>();
series.setName("spending");
for (Map.Entry<String, Double> i : graphData.entrySet()) {
XYChart.Data<String, Number> dataToAdd = new XYChart.Data<>(i.getKey().toString(),
Math.round(i.getValue()));
series.getData().add(dataToAdd);
}
spendingChart.getData().add(series);
spendingChart.setMaxWidth(470);
spendingChart.setMaxHeight(360);
graphPaneView.getChildren().add(spendingChart);
graphPaneView.setStyle("-fx-background-color: white");
}
}