昨天可以得出相關係數是多少,但還是很難直接看到每一天的資料到底發生了什麼變化。所以今天把原本只有文字和數字的分析結果視覺化,讓他在使用時能更容易觀察資料的變化
我先以之前設定的四大項來規劃:
睡眠時數如何變化?
用折線圖,從資料的date和sleep_hours,就可以看到睡眠時數隨著日期的變化,哪一天的睡眠時數增加、哪一天減少。
睡眠品質好的平均睡眠時數是多少?
用長條圖比較good、normal、bad三種睡眠品質的平均睡眠時數。
任務量與入睡時間的關系?
搭配作天皮兒森相關係數的算法,從資料的tasks和bedtime觀察兩者的資料分布與關係。
任務難度與睡眠品質的關系?
這部分比較特殊,因為difficulty和quality都屬於分類資料而非數值,所以使用分組長條圖,比較不同任務難度下good、normal、bad出現的次數。
是一個 Java 的圖表函式庫,用途就是把 Java 裡的資料畫成圖表。
主要會用到幾個類別和方法:CategoryChart代表圖表本身,用來存放圖表以及加入的資料。CategoryChartBuilder可以設定圖表的大小、標題和 X/Y 軸等。chart.addSeries()可以把要呈現的資料加入圖表。SwingWrapper可以開出一個視窗,把建立好的圖表顯示出來。功能上可以先理解成之前使用過的 JOptionPane。
先從比較簡單理解的睡眠時數變化
首先建立兩個 List List<String> categories = new ArrayList<>(qualityAvgMap.keySet()); List<Double> values = new ArrayList<>(qualityAvgMap.values());,分別存放日期和睡眠時數,然後使用之前學過的 for-each,把 records 裡面的每一筆 SleepRecord 依序取出,XChart 的 CategoryChartBuilder 建立圖表。最後:new SwingWrapper<>(chart).displayChart()就能將剛才建立好的圖表顯示出來。