網(wǎng)站建設(shè)找星火龍佛山seo培訓機構(gòu)
上文介紹tablesaw的數(shù)據(jù)處理功能,本文向你展示其數(shù)據(jù)可視化功能,并通過幾個常用圖表示例進行說明。
Plot.ly包裝
可視化是數(shù)據(jù)分析的重要組成部分,無論你只是“查看”新數(shù)據(jù)集還是驗證機器學習算法的結(jié)果。Tablesaw是一個開源、高性能的Java“數(shù)據(jù)框架”,也是一個用于轉(zhuǎn)換數(shù)據(jù)以供分析的庫。Tablesaw的新繪圖框架提供了用Java為整個分析過程創(chuàng)建可視化的平臺,從最早的探索到最后的展示。
該框架提供了Java版本的Plot.ly開源JavaScript可視化庫封裝。Plot.ly基于出色的D3(數(shù)據(jù)驅(qū)動文檔)框架,Plot.ly非常好,事實上,它被廣泛用于JavaScript以外的語言,如Python和R,雖然這些語言已經(jīng)有了可靠的可視化選項。與其他語言一樣,tablesaw提供的包裝器,可以很容易地用純Java構(gòu)造圖形,并用HTML和JavaScript呈現(xiàn)它們。
加入依賴
<dependency><groupId>tech.tablesaw</groupId><artifactId>tablesaw-core</artifactId><version>0.43.1</version>
</dependency>
<!-- Tablesaw的繪圖擴展,用于數(shù)據(jù)可視化 -->
<!-- https://mvnrepository.com/artifact/tech.tablesaw/tablesaw-jsplot -->
<dependency><groupId>tech.tablesaw</groupId><artifactId>tablesaw-jsplot</artifactId><version>0.43.1</version>
</dependency>
時間序列圖示例
Table bush = Table.read().csv("bush.csv");foxOnly = bush.where(bush.stringColumn("who").equalsIgnoreCase("fox"));Plot.show(TimeSeriesPlot.create("Fox approval ratings for George W. Bush", foxOnly,"date", "approval"));
上面代碼,首先加載數(shù)據(jù),然后過濾數(shù)據(jù)。接著創(chuàng)建時間序列圖,create()方法包括四個參數(shù),分別為標題和數(shù)據(jù),后面兩個參數(shù)分別指定x軸和有軸數(shù)據(jù)列。當然我們也可以分為兩步實現(xiàn),首先創(chuàng)建圖,然后調(diào)用 Plot.show()方法顯示圖形:
Figure foxPlot =TimeSeriesPlot.create("George W. Bush approval ratings", foxOnly,"date", "approval");Plot.show(foxPlot);
散點圖示例
- 數(shù)據(jù)說明
Month,Record,Robberies
1966-01,1,41
1966-02,2,39
1966-03,3,50
1966-04,4,40
1966-05,5,43
1966-06,6,38
1966-07,7,44
1966-08,8,35
1966-09,9,39
1966-10,10,35
1966-11,11,29
1966-12,12,49
1967-01,13,50
第一列是年月,第二列是月份序號,第三列是搶劫案發(fā)生次數(shù)。我們希望采用折線圖方式展現(xiàn)數(shù)據(jù)。為了更好定義圖形,我們通過Layout 和 ScatterTrace兩個類實現(xiàn):
Table robberies = Table.read().csv("boston-robberies.csv");Layout layout =Layout.builder("Boston Robberies by month: Jan 1966-Oct 1975","year", "robberies").build();ScatterTrace trace =ScatterTrace.builder(robberies.numberColumn("Record"),robberies.numberColumn("Robberies")).mode(ScatterTrace.Mode.LINE).marker(Marker.builder().color("#3D9970").build()).fill(ScatterTrace.Fill.TO_NEXT_Y).build();Plot.show(new Figure(layout, trace));
Layout
類的構(gòu)建器模式來創(chuàng)建一個 Layout
實例。傳遞給構(gòu)建器的參數(shù) "Boston Robberies by month: Jan 1966-Oct 1975"
作為圖形的標題,"year"
和 "robberies"
這兩個參數(shù)指定布局中坐標軸等相關(guān)元素(比如橫坐標可能對應(yīng) year
,縱坐標對應(yīng) robberies
),最后調(diào)用 build()
方法來生成實際的 Layout
對象,該對象會定義可視化圖形整體的布局結(jié)構(gòu)。
使用 ScatterTrace
類的構(gòu)建器模式創(chuàng)建 ScatterTrace
對象(用于定義散點圖相關(guān)的配置和數(shù)據(jù)綁定)。在構(gòu)建器的參數(shù)中,通過 robberies.numberColumn("Record")
和 robberies.numberColumn("Robberies")
來指定散點圖中數(shù)據(jù)對應(yīng)的列(這里分別獲取名為 "Record"
和 "Robberies"
兩列的數(shù)據(jù))。通過 .mode(ScatterTrace.Mode.LINE)
將散點圖的展示模式設(shè)置為折線模式,意味著這些散點會用線段依次連接起來形成折線圖。
.marker(Marker.builder().color("#3D9970").build())
這部分用于設(shè)置散點(或者說折線圖上數(shù)據(jù)點對應(yīng)的標記)的樣式,這里指定了顏色為 "#3D9970"
,是通過先創(chuàng)建一個 Marker
構(gòu)建器對象,設(shè)置顏色屬性后再生成實際的 Marker
對象傳遞給 ScatterTrace
構(gòu)建器。.fill(ScatterTrace.Fill.TO_NEXT_Y)
是在折線和下一個 Y
軸坐標范圍之間進行填充操作),然后調(diào)用 build()
方法完成 ScatterTrace
對象的構(gòu)建,這個對象包含了散點圖(折線模式下)具體的數(shù)據(jù)和樣式等配置信息。
k線圖示例
每個時間點展示開盤價、最高和最低價、收盤價。
Table priceTable = Table.read().csv("ohlcdata.csv");
Plot.show(OHLCPlot.create("Prices", priceTable, "date", "open", "high", "low", "close"));
總結(jié)
本文介紹tablsesaw數(shù)據(jù)可視化功能,包括引入依賴,幾個常用圖表示例。更多內(nèi)容可參考官方示例。