翻譯|使用教程|編輯:張瑩心|2021-10-21 11:01:19.630|閱讀 243 次
概述:本文將展示如何快速創建一個很酷的交互式線性儀表圖,突出顯示世界各地的 Covid-19 疫苗接種數據。我們的圖表將使我們能夠在撰寫本文時可視化 Covid-19 疫苗接種的狀態,并將顯示兩種類型的數據——顯示我們離全球人口部分和完全接種疫苗的中間目標還有多遠。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
AnyChart是基于JavaScript (HTML5) 的圖表控件。使用AnyChart控件,可創建跨瀏覽器和跨平臺的交互式圖表和儀表。AnyChart 圖表目前已被很多知名大公司所使用,可用于儀表盤、報表、數據分析、統計學、金融等領域。
AnyChar HTML5圖表高度可定制且高度兼容。擁有純JavaScript API,AnyChart圖表內置客戶端數據實時更新,多層次向下鉆區和具體參數更新。強大的主題引擎使你通過一系列圖表進行獨特的演示體驗,而PDF和圖像輸出能產出圖書質量打印文檔。
本文提供了一個易于遵循的指南,用于在 JavaScript 中構建交互式線性儀表圖。我們將展示如何快速創建一個很酷的交互式線性儀表圖,突出顯示世界各地的 Covid-19 疫苗接種數據。我們的圖表將使我們能夠在撰寫本文時可視化 Covid-19 疫苗接種的狀態,并將顯示兩種類型的數據——顯示我們離全球人口部分和完全接種疫苗的中間目標還有多遠。
甲線性量規圖表表示垂直或水平線性刻度,顯示了所需的值,與一個色標有單個或多個的指針沿。可以根據所表示的數據在軸上設置數據范圍的最小值和最大值。指針位置指示度量的當前值。
儀表圖可以使用單個指針或標記組合顯示單個值或多個值。指針可以是針或帶有任何形狀(如圓形、正方形、矩形或三角形)標記的線。
線性儀表圖類型是一種有效的可視化表示,用于顯示值與所需數據點的接近程度或距離程度。
幾種類型的線性儀表是溫度計圖、子彈圖、儲罐圖和 LED 圖表。水銀溫度計 - 由顯示溫度和指針值的小刻度組成 - 是線性儀表圖的經典示例。
這是對最終線性儀表圖的先睹為快。按照本教程學習我們如何使用 JavaScript 構建這個有趣且內容豐富的線性儀表圖。
掌握一些使用 HTML 和 JavaScript 等技術的技能總是很有用的。但是在本教程中,我們使用了一個 JS 圖表庫,它可以更輕松地創建引人注目的圖表,例如線性儀表,即使只有最少的技術知識。
有幾個JavaScript 圖表庫可以輕松地可視化數據,這里我們使用AnyChart創建線性儀表圖。這個庫很靈活,有大量的文檔,并且包含一些很好的例子。此外,它有一個用于試驗代碼的游樂場,可免費用于非商業用途。如果您想購買許可版本,可以查看可用選項,如果您是教育組織或非營利組織,可以在此處聯系以獲取免費許可。
這些是創建線性儀表圖的基本步驟:
我們需要做的第一件事是制作一個 HTML 頁面來保存我們的可視化。我們添加一個<div>塊元素并給它一個 ID,以便我們稍后引用它:
<html lang="en"> <head> <title>JavaScript Linear Gauge</title> <style type="text/css"> html, body, #container { width: 100%; height: 100%; margin: 0; padding: 0; } </style> </head> <body> <div id="container"></div> </body> </html>寬度和高度屬性<div>設置為 100%,以便在整個屏幕上呈現圖表。這些屬性可以根據需要進行修改。
要創建線性儀表圖,我們需要添加三個腳本:核心模塊、線性儀表模塊和表格模塊:
<html lang="en"> <head> <title>JavaScript Linear Gauge</title> <style type="text/css"> html, body, #container { width: 100%; height: 100%; margin: 0; padding: 0; } </style> </head> <body> <div id="container"></div> <script> // All the code for the JS linear gauge will come here </script> <script src="http://cdn.anychart.com/releases/8.10.0/js/anychart-core.min.js"></script> <script src="http://cdn.anychart.com/releases/8.10.0/js/anychart-linear-gauge.min.js"></script> <script src="http://cdn.anychart.com/releases/8.10.0/js/anychart-table.min.js"></script> </body> </html>
線性儀表圖的數據是從Our World in Data 中收集的,并包含在代碼中。在那個網站上,我們可以看到全世界每個大陸接受一劑和兩劑 Covid疫苗的人的百分比。
因為(在撰寫本文時)沒有一個數字大于 50%,所以我們將所有線性儀表的軸的最大限制保持為 50%,并且我們比較了每個大陸與該標記的距離,以及全球數字。我們用 LED 表示至少部分接種疫苗的數字,并用條形指針表示完全接種疫苗的數字。我們將看到如何在最后一步添加數據。
那么,我們的初始步驟都完成了,現在讓我們添加代碼來使用 JavaScript 制作線性儀表圖!
在添加任何代碼之前,我們將所有內容都包含在一個函數中,以確保其中的整個代碼僅在頁面加載后才執行。
創建線性儀表圖涉及幾個步驟,并且比其他基本圖表類型要復雜一些。但這并不意味著它非常困難,我們將通過每一步來了解圖表是如何制作的。
function drawGauge(value, settings) { // Create gauge with settings const gauge = anychart.gauges.linear(); gauge.data([value, settings.value]); gauge.layout('horizontal'); // Set scale for gauge const scale = anychart.scales.linear(); scale.minimum(0).maximum(settings.maximum).ticks({ interval: 2 }); // Set axis for gauge const axis = gauge.axis(0); axis.width('1%').offset('43%').scale(scale).orientation('bottom'); }
現在,我們將為條形系列創建條形指針和標簽。標簽被賦予一個偏移量以避免與指針重疊:
// Create and set bar point const barSeries = gauge.bar(0); barSeries .scale(scale) .width('4%'); // Create and set label with actual data const labelBar = barSeries.labels(); labelBar .enabled(true) .offsetY('-15px');
在 LED 點中,我們將指定點之間的間隙,并使用 dimmer 屬性設置剩余 LED 點的顏色以指示不亮效果。我們還將聲明點亮的 LED 點的色階:
// Create and set LED point const ledPointer = gauge.led(1); ledPointer .offset('10%') .width('30%') .count(settings.maximum) .scale(scale) .gap(0.55) .dimmer(function () { return '#eee'; }); ledPointer.colorScale().colors(['#63b39b', '#63b39b']);
為了制作每個大陸的線性儀表,我們將為每個區域及其數據調用上面定義的函數。第一個數字表示目標值數據,第二個變量是帶有 LED 數據的對象。在maximum保持恒定的50,而value完全接種群體的每個數據點的百分比值。該值將由指針顯示:
// Create gauges const world = drawGauge(13.68, { maximum: 50, value: 27.13 }); const europe = drawGauge(36.98, { maximum: 50, value: 47.28 }); const nAmerica = drawGauge(36.77, { maximum: 50, value: 46.53 }); const sAmerica = drawGauge(22.8, { maximum: 50, value: 40.54 }); const asia = drawGauge(10.14, { maximum: 50, value: 27.16 }); const oceania = drawGauge(9.75, { maximum: 50, value: 22.12 }); const africa = drawGauge(1.56, { maximum: 50, value: 3.04 });
// Create table to place gauges const layoutTable = anychart.standalones.table(); layoutTable .hAlign('right') .vAlign('middle') .fontSize(14) .cellBorder(null); // Put gauges into the layout table layoutTable.contents([ [null, 'Covid-19 Vaccination - How far are we from the halfway mark?'], ['World', world], ['Europe', europe], ['North America', nAmerica], ['South America', sAmerica], ['Asia', asia], ['Oceania', oceania], ['Africa', africa] ]); // Set height for first row in layout table layoutTable .getRow(0) .height(50) .fontSize(22) .hAlign('center'); // Set the first column to 100% width layoutTable.getCol(0).width(100);
// Set container id and initiate drawing layoutTable.container('container'); layoutTable.draw();就是這樣。我們現在有一個功能齊全且漂亮的 JavaScript 線性儀表圖!可以在CodePen [和AnyChart Playground ]上查看此線性儀表初始版本的代碼。
我們制作的默認線性儀表圖現在看起來很棒,但進行一些修改將提高可讀性并使圖表更加出色。JavaScript 庫不僅可以快速創建圖表,還可以根據需要自定義可視化效果。圖表庫提供了許多用于控制圖表行為和美感的配置選項。讓我們對當前的線性儀表圖進行一些小而有效的調整。
為了使線性儀表看起來更具凝聚力,讓我們將條形指針的顏色屬性設為 LED 點的較暗版本。我們將通過指定欄的填充和描邊屬性來實現:
// Create and set bar point const barSeries = gauge.bar(0); barSeries .scale(scale) .width('4%') .fill('#296953') .stroke('#296953');
// Create stand alone legend const legend = anychart.standalones.legend(); legend .position('center') .items([ { text: 'Fully vaccinated', iconFill: '#296953' }, { text: 'Partially vaccinated', iconFill: '#63b39b' }, { text: 'Not vaccinated', iconFill: '#eee' } ]);
// Set gauge tooltip gauge .tooltip() .useHtml(true) .titleFormat('{%Value} %') .format( 'Maximum on scale: ' + settings.maximum + ' %' );在CodePen [或AnyChart Playground ]上查看此版本的完整代碼。
這個 JavaScript 線性儀表圖的整個最終代碼可以在CodePen [和AnyChart Playground ] 上找到。
更多AnyChart相關資源,請點擊此處進行查看~ 想要購買AnyChart正版授權的朋友可以。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn