首頁 web前端 js教程 billboard.js elease:新的區域步長圖表!

billboard.js elease:新的區域步長圖表!

Aug 24, 2024 am 11:09 AM

新的 v3.13 版本今天發布了!此版本包含 4 個新功能、2 個錯誤修復和工具改進。

詳細發布信息,請查看發行說明:
https://github.com/naver/billboard.js/releases/tag/3.13.0

什麼是新的?

面積步長範圍圖

範圍類型對於從基線值可視化「範圍值」很有用。從這個版本開始,將為變體提供新的“步驟”類型。

billboard.js elease: new area-step-range chart!

示範: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 選項。但渲染虛線的方式,需要將多個路徑指令組合成虛線來完成。

billboard.js elease: new area-step-range chart!

從上面的範例截圖來看,需要多個路徑指令來繪製虛線。

## 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 樣式屬性來渲染。

billboard.js elease: new area-step-range chart!

  • 之前:路徑指令/之後:中風破折號

示範:https://naver.github.io/billboard.js/demo/#Chart.LineChartWithRegions

在縮放互動上,動畫影格效能已從 84ms 提升至 5ms

billboard.js elease: new area-step-range chart!

透過更新到 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。

billboard.js elease: new area-step-range chart!

在這種情況下,如果指定 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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

在打字稿中的高級條件類型 在打字稿中的高級條件類型 Aug 04, 2025 am 06:32 AM

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

微觀前端體系結構:實施指南 微觀前端體系結構:實施指南 Aug 02, 2025 am 08:01 AM

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

JavaScript中的VAR,LET和CONST之間有什麼區別? JavaScript中的VAR,LET和CONST之間有什麼區別? Aug 02, 2025 pm 01:30 PM

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

生成可解的雙巧克力謎題:數據結構與算法指南 生成可解的雙巧克力謎題:數據結構與算法指南 Aug 05, 2025 am 08:30 AM

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

如何使用JavaScript從DOM元素中刪除CSS類? 如何使用JavaScript從DOM元素中刪除CSS類? Aug 05, 2025 pm 12:51 PM

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

JavaScript中的類語法是什麼?它與原型有何關係? JavaScript中的類語法是什麼?它與原型有何關係? Aug 03, 2025 pm 04:11 PM

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

Vercel SPA路由與資源加載:解決深層URL訪問問題 Vercel SPA路由與資源加載:解決深層URL訪問問題 Aug 13, 2025 am 10:18 AM

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

掌握JavaScript數組方法:``map`,`filt filter''和`reste'' 掌握JavaScript數組方法:``map`,`filt filter''和`reste'' Aug 03, 2025 am 05:54 AM

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

See all articles