爲什麼在2022年數據可視化的性能這麼重要?

爲什麼2022年數據可視化的性能這麼重要?

作者:Lightningchart team

 

 

 

 

 

 

幾天前,我在谷歌上做了一個搜索,特別是我想知道對於那些需要在應用程序中對大量數據點進行可視化的開發人員來說,有哪些選擇。令我驚訝的是,我真的找不到那麼多解決方案,事實上,我得到的大多數結果都是多年前的。

 

 

 

但有一個結果吸引了我的注意,是一個Reddit帖子,一個用戶問如何繪製數十億的數據點?當其他用戶回答說 "嘗試使用Power BIExcel "時,有人提出了一些變通方法,比如在Python環境中使用Pandas DataFrame來存儲和操作數據。但是,發佈問題的用戶並不想存儲和操作數據,他想將數據可視化!所以,如何將數十億的數據可視化?

 

 

 

那麼,如何將數十億的數據點可視化,爲什麼要這樣做?

 

 

 

關鍵要點

 

 

 

  1. 在高要求的行業中,億萬數據點的大規模可視化是可能的,也是必要的。
  2. 通過實施正確的圖表庫,高性能和大數據集的可視化確實是可能的。
  3. 實施變通方法來模仿高性能的數據可視化,最終可能會導致性能低下和信息丟失。
  4. 一個高性能的圖表庫是基於高端渲染技術、有效的資源消耗,以及最重要的是智能算法。
  5. 降採樣不等於高性能,而是數據的損失。

 

 

 

目錄

 

  • 爲什麼要對數十億的數據點進行可視化?
  • 數據可視化的高性能
  • 降採樣
  • 圖表庫
  • JavaScript圖表庫
  • .NET圖表庫

 


 

爲什麼要對數十億的數據點進行可視化?

 

繼續分析這位Reddit用戶的問題,一些用戶也許會提出,將數十億的數據點可視化超出了大多數人的工作範圍。

 

事實上,該帖子的作者後來解釋說,作爲一個與物理學家合作設計大功率電源的開發人員,有必要了解有源元件在高頻率下的影響。

 

現在,我們可以從這個真實場景中吸取幾個教訓。首先是爲什麼要將十億個數據點可視化,或者在什麼情況下要這樣做?

 

就像用戶的情況一樣,有幾個要求嚴格的行業需要處理大量的數據,這些數據超出了大多數人需要可視化的範圍。

 

例如,醫學可視化是那些要求很高的行業之一,需要特定的技術特徵和圖表類型,可以處理大量的數據。

 

醫學可視化是那些幾乎可以在每個過程中使用數據可視化的行業之一,從行政管理或醫療數據監控到研究、分子分析或醫療設備開發。

 

Power BI這樣的解決方案對於醫療管理數據的成千上萬的數據點的可視化是非常有用的,而在高端分析的複雜數據的可視化中,圖表組件是必須的。

 

另一個現實世界的案例是在賽車運動中,數十億的數據點從高性能(F1Nascar等)車輛實時傳輸到數據記錄系統,這些系統即時處理數據並支持賽車工程師的決策。

 

數據記錄器應用

https://v.youku.com/v_show/id_XNTgxNjkxMzY4MA==.html

https://youtu.be/bTELhYOCqNA

 

 

需要將數十億數據點可視化的行業名單還可以繼續下去......振動分析、工業自動化、衛星3D移動製圖,等等 但從Reddit帖子中要強調的第二個學習是實施變通的後果

 

 

 

Reddit用戶分享說,具有高採樣率的快速變化的屬性可能需要幾個小時來渲染,臨時解決方案,如縮小數據集的規模,會導致信息的損失,這也是降採樣方法經常發生的事情。

 

 

 

第三個研究帶我們評估了用戶試圖實現的製圖方案。例如,該用戶實施了Matplotlib、帶有WebGLPlotlyd3.js,用該用戶自己的話來說,"所有的解決方案似乎都難以擴展到這個[十億數據點]的規模"

 

 

 

現在,這些都是很好的數據可視化解決方案,但它們並不是面向高性能的,這就需要我們定義什麼是高性能的數據可視化?或者說高性能圖表的特點是什麼?

 


 

數據可視化中的高性能

 

 

讓我們從高性能的定義開始,它指的是 "比別人更好、更快、更有效 "的東西,在數據可視化或圖表(又稱圖表控件或組件)的背景下,高性能數據可視化將指那些比其他解決方案更好、更快、更有效的圖表控件。

 

我們確定了高性能圖表庫的6個特點,它們的影響,以及它們在現實世界中的使用情況。

高性能使能

爲什麼?

現實世界的使用案例

以高數據率串聯實時圖表

可視化是實時發生的,支持平滑滾動的圖表,同時支持多達數千個數據源。

使用它的行業:振動研究、機器狀態監測、儀器儀表、工業自動化、醫療應用(ECGEEG)、地震監測、金融技術等。

極高的刷新率

圖表可以每秒鐘更新100次,而不是每分鐘1次。它不會抽動,提供了一個更愉快的可視化和互動。

應用程序需要以儘可能低的延遲顯示動態2D3D圖表。

滯後性極低

允許即時可視化數據,而不會在數據流中出現延遲。支持有效和實時的決策,將滯後性降到最低。

使用它的行業:賽車遙測系統、航空、貿易、醫藥等。

全面準確的數據

所有的數據都可以被完全精確地可視化,而不需要使用降採樣等變通方法來減少數據集的大小,因爲降採樣會導致失去有價值的信息。

在醫學可視化中,心電圖(ECG)數據通常是每秒1000個數據點的流。通過降低採樣率來減少可視化的數值會失去重要的信息。

減少資源消耗(能源、工作、時間)

智能算法減少了對計算能力的要求和能源的消耗。不需要超級計算機就能實現高性能的可視化。

 

大而複雜的數據集的即時可視化大大節省了工作時間。

用傳統的圖表可視化一個數據集可能需要幾個小時,而CPU100%佔用,能耗最大。

 

LightningChart中,數據是在幾毫秒內打開的,而不是幾小時

 

顯著地節省了能源和工作時間。

更好的用戶體驗

更加吸引人的圖表外觀和感覺,以及互動的使用。

所有的應用程序都會受益

這是關於什麼是數據可視化中的高性能的廣泛但必要的回顧,因爲不是所有的數據可視化工具都是面向高性能的,而是面向更多的基本用途。


 

 

降採樣

 

 

現在,讓我們來談談降採樣,它與只提供高性能相反,是可視化百萬/十億數據點的最常見的變通方法之一。在所謂的 "高性能 "圖表工具的範圍內,下采樣的問題是廣泛存在的,因爲它通常是爲了渲染大型數據集而實施的,但是,什麼是下采樣?

 

下采樣是一種只處理部分數據的技術,例如,只對每100個數據點進行可視化處理,而放棄其餘99%的數據,從而導致信息的巨大損失。

 

首先,這裏有一個例子,當一個數據集的所有數據都被正常渲染時,它看起來是什麼樣子。

 

 

相反,當一個數據集被降頻後,大量的信息被丟失,這就是數據集的樣子。

 

 

因此,考慮到當一個數據集包含1,000,000個點,並且應用了100的下采樣係數,只有10,000個數據點會被處理。信息的損失將是巨大的,依賴於實時數據流的實時應用,如醫療可視化賽車遙測系統的實時監測,將顯示出信息不完整的圖表和分析結果。

 

基本用例可能支持使用下采樣,但我們談論的是高性能的數據可視化,如醫療可視化、賽車、電信、金融科技等行業,需要處理所有傳入的數據。在這種情況下,現實世界的應用要求更高,簡單的解決方案,如開源庫或簡單的數據可視化工具,無法完成工作。

 

分析Reddit用戶的真實案例場景,我們可以發現,該用戶正在努力尋找一種解決方案,可以在不需要應用降採樣技術和不放棄縮放和平移等高性能功能的情況下將數十億的數據點可視化。如何解決這個問題?

 


 

圖表庫

 

 

圖表庫是一個不同圖表的綜合集合,開發人員可以將其集成到應用程序中,其建立是爲了處理數百萬和數十億的數據點,同時將數據呈現爲易於理解的可視化或儀表板。

 

創建可視化和儀表盤支持一個組織的決策過程,也允許數據的實時流,過程監控和分析。根據不同的行業和所需的洞察力水平,數據可視化的使用會有所不同。

 

在過去幾年內,由於從多個來源產生的數據不斷增長,以及專業人士可以從數據中獲得有價值的信息,對數據可視化工具(圖表庫、商業智能工具、信息圖)的需求也在增加。

 

例如,圖表庫需要另一個層次的專業知識,因爲它們只能被開發人員集成到應用程序中,但可視化可以被可視化所針對的任何類型的終端用戶所消費。

 

在談論圖表庫時,我們強調JavaScript圖表庫.NET圖表庫,因爲它們具有高性能、平臺兼容性、流行性、易於集成。

 

下面是一個JS交互式心電圖的例子。

JS心電圖(ECG/EKG

 


 

JavaScript圖表庫

 

 

JS圖表可以在網絡和移動應用程序中實現可視化,因此跨平臺的兼容性使得JS圖表庫成爲幾乎所有設備的強大可視化工具。使得高性能的JS圖表庫的一些關鍵特徵是。

 

  • 渲染技術。WebGL渲染是最先進的渲染技術,用於兼容瀏覽器的2D3D圖表的可視化。它與GPU加速完全兼容。

 

儘管有各種具有WebGL技術的庫,但釋放可視化的全部潛力仍受限於其他變量,如資源消耗和算法。

 

  • GPU加速。具有GPU加速功能的圖表組件效率更高,因爲圖形處理單元(GPU)與設備的CPU一起工作,通過將不同的任務分配給不同的處理單元來加快處理時間。在實踐中,GPU加速的可視化處理速度更快,這是高性能圖表控件的祕密之一。

 

  • 庫集合。一個圖表庫需要具有廣泛的可視化、交互式例子和專用目的或行業的可視化類型的集合。例如,LightningChart JS具有100多個交互式可視化實例。

 

  • 算法。如前所述,WebGL渲染和GPU加速等高端技術,如果沒有智能算法,並不一定能保證高性能。

 

智能算法涉及到創新,並傳達了不同的技術,比現有的技術更有效地解決數據可視化的挑戰。

 

  • CPU和資源消耗。在數據可視化中,一般的圖表庫往往有極高的CPU資源消耗。在這種情況下,設備的全部資源可用性被破壞,只能在一個進程中工作,沒有更多的資源可用於其他任務。

 

例如,極高的資源消耗將不允許用戶與圖表互動,系統很可能會凍結。這是一個嚴重的話題,影響到需要從他們的應用程序中獲得快速響應的行業和終端用戶。

 

一個應用程序將始終受益於消耗最小CPU資源的圖表組件,並且不會對處理其他任務造成困擾。

 

  • 每秒幀數(FPS/刷新率。爲什麼刷新率是數據可視化的重要因素?一般來說,在圖形處理中,刷新率決定了圖形可視化的流暢程度。

 

沒有人喜歡低質量的可視化體驗,建議圖表庫的渲染速度至少爲40FPS

 

  • 加載速度。類似於高性能汽車在幾秒鐘內就能測出0-100公里的加速時間,圖表組件也能測出它們的渲染時間,但單位是毫秒。

 

因此,加載速度衡量的是一旦啓動渲染過程,需要多少毫秒才能讓用戶完全看到圖表。加載時間越快,用戶體驗就越好。

 

  • 可視化的最大數據量。簡單地說,在應用程序崩潰之前,一個數據可視化功能或渲染的數據點能有多少?可視化能力會因技術不同或圖表類型不同而不同。

 

例如,使用標準的低端設備,性能最高的JS Surface圖表所能可視化的最大數據量是。

圖表類型

最大數據量(低端設備)

靜態表面

1.44

刷新表面

1600

  • 傳入數據點。這是一個只在某些類型的圖表中出現的參數,表示圖表每秒能處理的傳入數據量。在運行要求較高的應用程序時,這一點尤其重要,如果圖表不能接受所有傳入的數據,應用程序將耗盡內存或崩潰。

 

你可以把LightningChart JSAppending Surface圖表的參數作爲高性能的良好參考

圖表類型

每秒收到的數據點

附屬的表面

200,000 

 

也就是說,JS圖表的性能總是取決於圖表類型(表面、熱圖、線圖等)、JS圖表庫以及設備的特性

 

查看更多關於JS圖表的高性能

線圖 

 

熱圖 

表面

 


 

.NET圖表庫

 

 

 

JS圖表庫類似,.NET圖表庫也包含了大量的圖表類型和可視化的集合,但它是爲運行在.NET框架開發的應用程序而編寫的。用.NET開發應用程序還可以利用跨平臺兼容性的力量。

 

 

 

正如微軟官方的 "什麼是.NET"發佈說明所提到的,一個.NET應用程序可以用C#F#Visual Basic編寫。有三種不同的.NET實現方式。

 

 

 

.NET用於跨平臺的應用開發,與網絡服務器和控制檯應用兼容。

 

.NET框架,支持Windows-native應用程序上的多種服務。

 

Xamarin實現,用於在不同的移動操作系統上運行應用程序。

 

 

 

下面是一個在音頻工程行業中常用的.NET三維光譜圖的例子。

 

 

在數據可視化方面,有幾個.NET圖表庫,既有開源的,也有商業的,主要是提供可以集成到.NET應用程序的圖表組件。使得高性能的.NET圖表庫的一些關鍵特徵是。

 

  • GPU加速。無論使用哪種編程語言,高性能的數據可視化庫都應該以最大化設備資源和提供快速渲染的可視化爲目標。 GPU加速的一些好處是。

 

  • 實時監控應用
  • 高分辨率的可視化
  • 平滑的交互性,沒有渲染延遲或閃動
  • 有效的設備資源管理(對於使用高性能應用程序的開發者來說很重要)。

 

  • 後備渲染。爲了始終提供最高性能的數據可視化,一個高性能的圖表庫必須有後備渲染功能。例如,LightningChart .NETGPU渲染不可用時,會使用DirectX11/DirectX9 WARP軟件進行渲染。

 

  • 圖庫的收集和功能。數據可視化庫應該涵蓋各種2D3D圖表,可以在任何要求高的行業中實現。

 

最常見的是,圖庫中包含的例子可能是XY圖、光譜圖、熱圖、線圖、面圖、散點圖、醫療可視化、史密斯圖、極地圖等!作爲參考,高度詳細的.NET繪圖庫至少有100可視化的例子

 

  • .NET兼容性。一個高性能的圖表庫可以主要是爲了支持.NET框架而編寫的,另外還可以支持其他的.NET版本,如.NET Core 3.0.NET 5,以及最新發布的.NET 6

 

  • UI功能和互動性。交互式可視化支持終端用戶如何與他們的數據、分析以及最終的知識進行交互。通常情況下,圖表庫(包括開源的和商業的)在提供交互性的同時很難保持性能。

 

高性能的數據可視化解決方案將兩者結合起來。在提供性能的同時,也提供了互動性。作爲一個很好的參考,一個可視化/圖表/圖形必須有全鼠標互動,支持觸摸屏,如果可能的話,還可以定製鼠標功能。

 

  • 可視化的最大數據量。與JS圖表類似,.NET圖表所能呈現的最大數據量取決於其類型、圖表庫和可用資源。例如,高度先進的SampleDataBlockSeries是一個線型序列的可視化,它可以將多達160億個數據點可視化

 

SampleDataBlockSeries的工作方式是將數據存儲爲內存塊,其中新進入的數據被存儲爲內存塊。其結果是大大降低了內存和CPU資源的消耗。

 

在可視化中使用這種高級算法時,受益的應用類型是例如醫療監測應用、振動監測或數據記錄器系統。

 

這種類型的高級可視化和高性能的圖表庫,對於需要大量可視化容量而又不影響性能的Reddit用戶來說,會是一個很好的解決方案!

 

SampleDataBlockSeries是有史以來性能最高的線列可視化,用於處理實時應用程序,建立在以最少的CPU和內存消耗處理極高數量的數據點。

 

LightningChart .NET開發的SampleDataBlockSeriesSDBS)允許通過使用AddSamples方法增加新的樣本。

 

// Add samples to the end.
sampleDataBlockSeries.AddSamples(samplesArray, false);

SampleDataBlockSeries的其他有用的屬性是PointCount屬性,可以用來獲取行系列可視化中當前的數據樣本總數。

 

// Get the total number of samples.
int samplesCount =_chart.ViewXY.SampleDataBlockSeries[0].PointCount;

 

下面是一個用於.NETSampleDataBlockSeries行系列的例子,展示了160億個數據點。

https://youtu.be/JTcQP8opv-4


用於桌面、網絡和移動應用開發的LightningChart®數據可視化庫

 

 

一個好的圖表組件可能有WebGL技術,甚至有GPU加速的圖表,但可能仍然沒有高性能。這是爲什麼呢?

 

主要是以解決最困難的工程問題爲導向的智能算法的發展,才能決定如何有效地利用世界級技術的高性能,如GPU加速和DirectX 11 & DirectX 9支持。

 

無數年的發展使LightningChart通過爲科學數據可視化提供最佳的計算性能,成爲世界上最高性能的.NETJavaScript的數據可視化庫。

 

LightningChart .NETLightningChart JS在高性能算法的開發上都有創新,涵蓋了科學、工程、工業、賽車、電信(以及其他)領域的大量應用。

 

LightningChart®數據可視化解決方案是適用於.NETJavaScript的高級數據可視化庫,具有200多個圖表,可以很容易地集成到跨平臺的應用程序中,這些應用程序需要高性能的圖表,具有快速渲染和幾十億數據點的大數據集處理能力。

瞭解更多

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章