1. 程式人生 > >java/scala下的最好用的資料繪圖工具breeze-viz

java/scala下的最好用的資料繪圖工具breeze-viz

背景介紹

一些多輪迭代的程式,像機器學習程式等等,它會在執行時會打出很多狀態資訊,我們通過分析打印出來的log,判斷程式的效能指標。然而,由於log資料太多,資訊太大,靠眼睛看往往很難掌握系統的狀態變化情況,如每輪迭代的輸出是如何隨迭代次數變化的,各輪迭代的時間變化等等。 
要是能把這些狀態資訊打印出來,用圖形顯示,這會大大的減少痛苦!!breeze-viz就是用來幹這件事的。 
您可能會問,為什麼不適用MATLAB等比較專業的繪圖軟體來繪圖呢?這是因為我們要做的工作是集文字處理和資料繪圖於一體。專業繪圖軟體適合於使用向量、矩陣等資料結構繪圖,然而,我們面對的是如自然語言一樣的log文字。在自然語言處理方面,Scala、Python等現在語言使用十分方便。若您是搞Spark,使用Scala再合適不過了!!

breeze-viz介紹

breeze-viz是git開源專案scalanlp/breeze的一部分,它能在java/scala語言環境繪製x-y點圖統計圖二維矩陣灰度圖。breeze專案現在用途很廣泛,Spark MLlib很多機器學習演算法建立在breeze之上。breeze中最主要的是它的breeze數學庫,包括向量、矩陣等基本資料結構,各種數學函式、分佈,數學常用演算法等等。 
現在我們介紹viz能夠繪製的3類圖形

點、線圖

點、線圖 
它用2個breeze vector變數分別表示橫座標點和豎座標點,在x-y軸上繪製出點。同一圖上可同時繪製 . + - 3種形狀的點,用以對比不同豎座標資料。

統計圖

統計圖 
它可以將離散資料集中的資料分佈在每個區間裡的個數統計出來,表示一種區間統計資訊。viz用scala Array儲存資料,通過指定區間個數和資料的跨度自動劃分區間長度。

二維矩陣圖

矩陣圖 
它能將矩陣裡面的資料按值的相對大小以灰度形式顯示,上圖便是元素隨機賦值的矩陣的表示效果,是不是特別像80年度訊號不好的黑白電視。

專案搭建

breeze-viz

我們下載breeze-viz jar包後還有下載它的全部Compile Dependencies(scala runtime/compiler除外),就在maven breeze-viz網頁下面,因為執行的時候需要這些jar Dependencies。

breeze

breeze本身就是breeze-viz的Compile Dependencies之一,然而它自己過於強大,也依賴一些其他的專案如:shapeless_2.11、breeze-macros_2.11、spire_2.11等等。 
當然,缺失什麼依賴執行程式是會包報告的,如: 
Error:scalac: error while loading DenseVector, Missing dependency ‘bad symbolic reference. A signature in DenseVector.class refers to term macros

 
in package breeze which is not available. 
It may be completely missing from the current classpath, or the version on 
the classpath might be incompatible with the version used when compiling DenseVector.class.’, required by C:\Users\Administrator\IdeaProjects\Drawing\lib\breeze_2.10-0.12.jar(breeze/linalg/DenseVector.class) 
缺失的便是macros,你就去breeze的Compile Dependencies裡下載它的依賴macros。

下載其他依賴…

建立繪圖工程

import我們下載的jar包,執行下面的Test程式,看看是不是有什麼依賴缺失,缺失就把它下載。 
執行Test程式,你就能看到breeze-viz介紹裡面的繪圖效果了。 
大功告成!!

import breeze.linalg.{DenseMatrix => BDM, DenseVector => BDV, linspace}
import breeze.plot._

/**
  * Created by Administrator on 2016/1/13.
  */
object Test {
  def main(args: Array[String]) {
    val a = new BDV[Int](1 to 3 toArray)
    val b = new BDM[Int](3, 3, 1 to 9 toArray)

    val f = Figure()
    val p = f.subplot(0)
    val x = linspace(0.0, 1.0)
    p += plot(x, x :^ 2.0)
    p += plot(x, x :^ 3.0, '.')
    p.xlabel = "x axis"
    p.ylabel = "y axis"
    f.saveas("d:\\lines.png")

    val p2 = f.subplot(2, 1, 1)
    val g = breeze.stats.distributions.Gaussian(0, 1)
    p2 += hist(g.sample(100000), 1000)
    p2.title = "A normal distribution"
    f.saveas("d:\\subplots.png")

    val f2 = Figure()
    f2.subplot(0) += image(BDM.rand(200, 200))
    f2.saveas("d:\\image.png")
  }
}
  • 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

一些樣例

這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述

作者介紹

唐黎哲,國防科學技術大學 並行與分散式計算國家重點實驗室(PDL)碩士,從事spark、圖計算、LDA(主題分類)研究,歡迎交流,請多指教。 
郵箱:[email protected]

相關推薦

java/scala最好資料繪圖工具breeze-viz

背景介紹一些多輪迭代的程式,像機器學習程式等等,它會在執行時會打出很多狀態資訊,我們通過分析打印出來的log,判斷程式的效能指標。然而,由於log資料太多,資訊太大,靠眼睛看往往很難掌握系統的狀態變化情況,如每輪迭代的輸出是如何隨迭代次數變化的,各輪迭代的時間變化等等。 要是

Spark線性代數,繪圖工具入門;scala, javaBreeze線性代數以及資料繪圖工具breeze-viz入門

//官方地址, https://github.com/scalanlp/breeze/wiki/Quickstar //由於編輯器的格式原因, 自行拷貝到整合開發環境中除錯格式,  程式碼都可以正確執行 def breezeTest: Unit ={ //Ve

MAC最好的抓包工具--charles簡單操作教程

一、Charles介紹 給大家推薦一款在mac上我覺得很好用的抓包工具,再過去的半年中給我很大幫助,在工作學習中使用很方便。那麼什情況下我們會需要使用抓包工具呢,比如我想檢視一個介面請求的引數、返回值,還有移動裝置上的http請求、https請求,有了charles一下搞定,媽媽再也不用擔心我的

MySql最好的資料庫管理工具是哪個

MySql下最好用的資料庫管理工具是哪個? 維基上有個很全的列表: https://en.wikipedia.org/wiki/Comparison_of_database_tools   1. phpmyadmin 用過3.9版,UTF-8 中文不顯示&n

MAC最好的抓包工具charles簡單操作教程,charles mac入門

ado 端口號 proc 通過 代理 關於 基本操作 sha 今天 Charles for Ma是 mac 平臺上一款非常強大的抓包神器,可以讓開發者監視查看所有連接互聯網的 HTTP 通信,包括請求,響應和 HTTP 頭信息等等,charles mac讓您的 Intern

Java代碼調HTTP請求工具

style java face follow ebo win targe gin left 匾m睬守肪2w雲磷62炒ohttp://www.facebolw.com/space/2105109/follower k8r讜嗆此8孤jzhttp://www.facebolw.

linux最好的視頻播放器,mplayer,smplayer怎麽安裝 播放黑屏

安裝 linux下 依賴 smplayer 播放器 install yum命令 log 首選項 推薦一款linux環境下好用的視頻播放器 mplayer沒有圖形化界面 smplayer是mplayer的有圖形化界面的軟件 用yum命令安裝 yum install smpl

ubuntu最好的防火牆shadaarp ,帶主動防禦

      shada-arpfirewall-1.0alpha3.i386.rpm 所有基於rpm的x86 Linux(核心版本>=2.6

java tomcat有wtpwebapps資料夾 和 webapps資料夾區別

java tomcat下有wtpwebapps資料夾  和  webapps資料夾區別 (1)webapps : tomcat預設部署路徑 (2)wtpwebapps : eclipse預設部署路徑

最好程式碼審查工具Understand for Mac破解版v5.0

understand mac 破解版是mac平臺上一款非常強大的程式碼審查工具,可以幫助程式設計師快速理解,衡量,維護和記錄他們的原始碼。understand mac 破解介面是用Qt開發的,支援多語言、多平臺,內建的目錄和檔案比較器。Understand Mac主要功能包括:語義變化分析,優化指標,組合

最好程式碼審查工具Understand for Mac破解版 v5.0(972)破解教程

瞭解MAC破解版是MAC平臺上一款非常強大的程式碼審查工具,可以幫助程式設計師快速理解,衡量,維護和記錄他們的原始碼。瞭解MAC破解介面是用Qt開發的,支援多語言,多平臺,內建的目錄和檔案比較器解讀Mac的主要功能包括:語義變化分析,優化指標,組合語言分析,自定義的建築創作,程式碼分析快照的建立。

CAD前輩都愛繪圖工具—迅捷CAD編輯器

proc .com src 移動 編輯器 能夠 一個 菜單 啟動 在CAD行業行業中,每天的工作就是和CAD圖紙打交道,要想繪制一張完美的CAD圖紙,那就需要一個好的CAD圖紙工具來進行輔助完成繪制,那就可以使用迅捷CAD編輯器來進行繪制。下面就來為大家說明一下如何使用CA

Windows的labelme資料標註工具安裝教程

前言 因為最近要做一個目標檢測的比賽,需要用到labelme這款開源標註工具,所以安裝了下 因為我是在Windows下使用的,所以這裡只介紹了Windows的安裝方法,Ubuntu、macOS等其他系統在上面的github都有詳細介紹,大家自行檢視哈 一、安裝A

2018年網友說最好的設計工具都有哪些?

實驗 宣傳 them alt 官網 精簡 滿足 一個 阿裏 軟件對於設計師的作用,就如同用筷子子吃飯,無器不成術。這些實用的好工具,間接性的讓我們的工作效率蹭蹭猛漲。 一. Adobe CC 2019 全家桶 軟件王者, Adobe CC 2019 當之無愧。 在今年

linux配置 oracle資料匯出工具sqluldr2

工具下載地址:   http://www.anysql.net/tools/sqluldr2-non-free-features.html 右側下載SQLULDR2 分別對應32為,64位的win和Linux平臺 安裝步驟 1.需要安裝oracle_client

Mac最好的文字編輯器

友情提醒:圖多殺貓。以前在Windows下一直用gVim,可以用鍵盤控制一切,操作起來是又快又爽,還支援一大堆外掛,想怎麼玩就怎麼玩。後來轉Mac後,也沿襲著之前的習慣,一直在用終端的Vim,偶爾會覺得外掛管理起來不方便,但沒有外掛也是萬萬不能的,慢慢地就開始想找另一款替代品

Ubuntu最好的SVN客戶端 rabbitvcs

[email protected]:~/startech_pdu/fw/dir-struct$ sudo apt-get install rabbitvcs-cli rabbitvcs-core rabbitvcs-gedit rabbitvcs-nautilus rabbitvcs-thunar

VS CODE 微軟旗最好的前端開發IDE編輯器+常用外掛介紹

安裝完成後自動會顯示中文,如果需要設定字型主題樣式等,請點選左下角的齒輪按鈕,裡面有一個設定,自行選擇自己喜歡的配置。 然後推薦安裝一些基本的外掛,會讓你的開發更便捷,點選左側第五個圖示,進入外掛商店,搜尋以下關鍵字: Atom One

Ubuntu最好的SVN客戶端

在Windows下用慣了tortoisesvn,一下子轉到Ubuntu下,急需尋找一個類似的SVN工具。Google了一下,試用了一下,esvn和rapidsvn,不盡如人意,esvn介面太簡陋,連基本的修改svn地址都不方便,還不支援https協議,暈。Rapidsvn,介面還算華麗,也支援https,可

Ubuntu 最好的pdf 閱讀註釋器----Foxit

MMP, 一直在Ubuntu下用 master pdf 看文章,唯一的缺點是不能插入中文字型,今天突然發現說有linux版的foxit,tmd,找了老半天,才找到網址:https://www.foxitsoftware.com/pdf-reader/,為何之前找的那個中文網