billboard.js elease:新的區域步長圖表!
新的 v3.13 版本今天發布了!此版本包含 4 個新功能、2 個錯誤修復和工具改進。
詳細發布信息,請查看發行說明:
https://github.com/naver/billboard.js/releases/tag/3.13.0
什麼是新的?
面積步長範圍圖
範圍類型對於從基線值可視化「範圍值」很有用。從這個版本開始,將為變體提供新的“步驟”類型。
示範:https://naver.github.io/billboard.js/demo/#Chart.FunnelChart
import bb, {areaStepRange} from "billboard"; bb.generate({ data: { columns: [ ["data1", [70, 40, 30], [155, 130, 115], [160, 135, 120], [200, 120, 110], [95, 50, 40], [199, 160, 125] ]], type: areaStepRange() } });
區域渲染改進
要使用虛線渲染某些範圍,請使用 data.regions 選項。但渲染虛線的方式,需要將多個路徑指令組合成虛線來完成。
從上面的範例截圖來看,需要多個路徑指令來繪製虛線。
## Multiple path command M5,232L95,136M99,139L104,142 M109,145L114,149 ... M L M L ... ## Single path command M4,232,136L139,192L206,23L274,164L341,108
這種方法導致了一些渲染問題(#1、#2),我們嘗試以原生方式改進此問題。
我們不再使用路徑指令繪製虛線,而是使用 stroke-dasharray 樣式屬性來渲染。
- 之前:路徑指令/之後:中風破折號
示範:https://naver.github.io/billboard.js/demo/#Chart.LineChartWithRegions
在縮放互動上,動畫影格效能已從 84ms 提升至 5ms!
透過更新到 3.12,無需更改任何程式碼即可獲得好處。
legend.format:提供原始資料id
當指定 data.names 選項時,它會使顯示的資料名稱與原始名稱(id)不同。
{ data: { names: { // will make data1 and data2, displayed in different values. data1: "Detailed Name", data2: "Name Detailed" }, columns: [ ["data1", 71.4], ["data2", 10] ] } }
在這種情況下,legend.format回呼,將收到data.names替換後的值,而不是原始id。
data: { names: { // will make data1 and data2, displayed in different values. data1: "Detailed Name", data2: "Name Detailed" }, } legend: { format: function(id) { // id will be 'Detailed Name' and 'Name Detailed' } }
從此版本將提供原始「id」值和替換的名稱。
data: { names: { // will make data1 and data2, displayed in different values. data1: "Detailed Name", data2: "Name Detailed" }, } legend: { format: function(id, dataId) { // id will be 'Detailed Name' and 'Name Detailed' // dataId will be 'data1' and 'data2' } }
示範:https://naver.github.io/billboard.js/demo/#Legend.LegendFormat
bar.width 回調
以前,bar.width 可以指定絕對值或比值。絕對不能反映圖表動態調整大小,比率可以反映但有一定限制。
路比的計算是基於以下公式。
x Axis tick Interval * ratio
例如,如果圖表寬度為 500px,軸刻度數為 5 x,則間隔約為 100px。
在這種情況下,如果指定 bar.ratio=0.5,則等式將如下,並且 bar 的寬度將為 49.9px。
100(exact value is 99.8) * 0.5 = 49.9
為了更好地控制調整欄的寬度值,將增強 bar.width 選項以接受具有方便參數的回呼函數。
示範:https://naver.github.io/billboard.js/demo/#BarChartOptions.BarWidth
bar: { width: function(width, targetsNum, maxDataCount) { // - width: chart area width // - targetsNum: number of targets // - maxDataCount: maximum data count among targets } }
還有一件事,更新測試框架
我們採用了 Karma + Mocha 作為測試框架,維護 billboard.js 穩定性是很棒的經驗。
遺憾的是,Karma 宣布棄用,我們需要遷移一些其他現代測試框架,以保持庫穩定並遵循現代生態系統。
經過一番研究,我們決定轉向 vitest。我們在此版本中成功遷移,本地測試改進高達 63%!
Packages | Duration | Diff over Karma |
---|---|---|
Karma (Mocha + Chai) | 142.382 | - |
Vitest (webdriverio:chrome) | 144.364* | +1.39% |
Vitest (playwright:chromium) | 51.606** | -63.75% |
填寫更多詳情,請查看 https://github.com/naver/billboard.js/pull/3866
閉幕式
這就是我們這次發布的全部內容,感謝您的關注!
以上是billboard.js elease:新的區域步長圖表!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

TypeScript的高級條件類型通過TextendsU?X:Y語法實現類型間的邏輯判斷,其核心能力體現在分佈式條件類型、infer類型推斷和復雜類型工具的構建。 1.條件類型在裸類型參數上具有分佈性,能自動對聯合類型拆分處理,如ToArray得到string[]|number[]。 2.利用分佈性可構建過濾與提取工具:Exclude通過TextendsU?never:T排除類型,Extract通過TextendsU?T:never提取共性,NonNullable過濾null/undefined。 3

Microfrontendssolvescalingchallengesinlargeteamsbyenablingindependentdevelopmentanddeployment.1)Chooseanintegrationstrategy:useModuleFederationinWebpack5forruntimeloadingandtrueindependence,build-timeintegrationforsimplesetups,oriframes/webcomponents

varisfunction-scoped,canbereassigned,hoistedwithundefined,andattachedtotheglobalwindowobject;2.letandconstareblock-scoped,withletallowingreassignmentandconstnotallowingit,thoughconstobjectscanhavemutableproperties;3.letandconstarehoistedbutnotinitial

本文深入探討瞭如何為“雙巧克力”(Double-Choco)謎題遊戲自動生成可解謎題。我們將介紹一種高效的數據結構——基於2D網格的單元格對象,該對象包含邊界信息、顏色和狀態。在此基礎上,我們將詳細闡述一種遞歸的塊識別算法(類似於深度優先搜索),以及如何將其整合到迭代式謎題生成流程中,以確保生成的謎題滿足遊戲規則,並具備可解性。文章將提供示例代碼,並討論生成過程中的關鍵考量與優化策略。

使用JavaScript從DOM元素中刪除CSS類最常用且推薦的方法是通過classList屬性的remove()方法。 1.使用element.classList.remove('className')可安全刪除單個或多個類,即使類不存在也不會報錯;2.替代方法是直接操作className屬性並通過字符串替換移除類,但易因正則匹配不准確或空格處理不當引發問題,因此不推薦;3.可通過element.classList.contains()先判斷類是否存在再刪除,但通常非必需;4.classList

JavaScript的class語法是原型繼承的語法糖,1.class定義的類本質是函數,方法添加到原型上;2.實例通過原型鏈查找方法;3.static方法屬於類本身;4.extends通過原型鏈實現繼承,底層仍使用prototype機制,class未改變JavaScript原型繼承的本質。

本文旨在解決在Vercel上部署單頁應用(SPA)時,深層URL刷新或直接訪問導致頁面資源加載失敗的問題。核心在於理解Vercel的路由重寫機制與瀏覽器解析相對路徑的差異。通過配置vercel.json實現所有路徑重定向至index.html,並修正HTML中靜態資源的引用方式,將相對路徑改為絕對路徑,確保應用在任何URL下都能正確加載所有資源。

JavaScript的數組方法map、filter和reduce用於編寫清晰、函數式的代碼。 1.map用於轉換數組中的每個元素並返回新數組,如將攝氏溫度轉為華氏溫度;2.filter用於根據條件篩選元素並返回符合條件的新數組,如獲取偶數或活躍用戶;3.reduce用於累積結果,如求和或統計頻次,需提供初始值並返回累加器;三者均不修改原數組,可鍊式調用,適用於數據處理與轉換,提升代碼可讀性與功能性。
