原創(chuàng)|使用教程|編輯:楊鵬連|2020-08-11 10:09:31.057|閱讀 700 次
概述:在本文中,我們將向您展示如何使用Highcharts創(chuàng)建交互式小提琴圖。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
Highcharts是一款純JavaScript編寫(xiě)的圖表庫(kù),為你的Web網(wǎng)站、Web應(yīng)用程序提供直觀、交互式圖表。當(dāng)前支持折線、曲線、區(qū)域、區(qū)域曲線圖、柱形圖、條形圖、餅圖、散點(diǎn)圖、角度測(cè)量圖、區(qū)域排列圖、區(qū)域曲線排列圖、柱形排列圖、極坐標(biāo)圖等幾十種圖表類(lèi)型。
在本文中,我們將向您展示如何使用Highcharts創(chuàng)建交互式小提琴圖。
我們首先描述小提琴圖。然后,我們將引導(dǎo)您完成代碼。
下面演示2012年奧運(yùn)會(huì)男和女運(yùn)動(dòng)員的體重以下學(xué)科:跆拳道,賽艇,鐵人三項(xiàng),擊劍。小提琴圖可以直觀直觀地可視化每個(gè)學(xué)科的分布形狀和概率密度(運(yùn)動(dòng)員的體重):
已經(jīng)知道了圖片,小提琴圖是顯示和比較數(shù)據(jù)集密度分布的最佳圖表。
現(xiàn)在,該探討代碼部分了。
該代碼分為兩個(gè)主要部分:
該功能(請(qǐng)查看GitHub鏈接)是小提琴情節(jié)的核心。該函數(shù)圍繞內(nèi)核密度估計(jì)(KDE)構(gòu)建?;旧希√崆賵D是KDE,其負(fù)片彼此相對(duì)顯示。該函數(shù)獲取數(shù)據(jù)集(在我們的情況下為運(yùn)動(dòng)員的體重)以及一些其他參數(shù),然后生成密度形狀和描述性統(tǒng)計(jì)量度:這是函數(shù)參數(shù)的描述:
function processViolin(step, precision, densityWidth, ...args) { processViolin(step, precision, densityWidth, ...args) { …… return {return { xiData,, results,, stat };}; }}step是最小數(shù)據(jù)集單位。該步驟用于對(duì)數(shù)據(jù)集進(jìn)行采樣并創(chuàng)建KDE。
let step = 1, precision = 0.00000000001, width = 3; let data = processViolin(step, precision, width, rowing, taekwondo, triathlon, fencing);讓數(shù)據(jù)= processViolin(步長(zhǎng),精度,寬度,劃船,跆拳道,鐵人三項(xiàng),擊劍);
創(chuàng)建圖表
圖表創(chuàng)建非常簡(jiǎn)單。系列的類(lèi)型是areasplinerange; 這種圖表類(lèi)型允許我們使用一個(gè)范圍來(lái)獲得小提琴的形狀。該范圍是正和負(fù)KDE值的計(jì)算結(jié)果。該選項(xiàng)inverted: true有助于使小提琴圖垂直而不是水平:
chart: { type: "areasplinerange", inverted: true, animation: true }為確保僅顯示所需數(shù)量的類(lèi)別,請(qǐng)確保使用以下代碼限制該數(shù)量,其中最小和最大選項(xiàng)具有確切數(shù)量的類(lèi)別范圍,在我們的示例中為四個(gè):“滾動(dòng)”,“ “跆拳道”,“鐵人三項(xiàng)”和“擊劍”。
yAxis: { .. min: 0, max: data.results.length - 1, ... },獲得正確的小提琴形狀的最后一招是擺脫標(biāo)記。否則,您將在每個(gè)系列的外部行周?chē)紟в蟹?hào):
plotOptions: { series: { marker: { enabled: false }, ... },到目前為止,小提琴排行榜看起來(lái)很棒。不過(guò),為了更加清晰起見(jiàn),我們可以添加一些描述性統(tǒng)計(jì)系數(shù),例如中位數(shù)(紅點(diǎn)),最大值(藍(lán)點(diǎn)),最小值(藍(lán)點(diǎn)),第一個(gè)四分位數(shù)(黑點(diǎn))和第三個(gè)四分位數(shù)(黑點(diǎn)):
stat.forEach((e, i) => { statData.push([]); statData[i].push( { x: stat[i][0], y: i, name: "Min", marker: { fillColor: mColor } }, { y: i, x: stat[i][1], name: "Q1", marker: { fillColor: qColor, radius: 4 } }, { y: i, x: stat[i][2], name: "Median", marker: { fillColor: medianColor, radius: 5 } }, { y: i, x: stat[i][3], name: "Q3", marker: { fillColor: qColor, radius: 4 } }, { y: i, x: stat[i][4], name: "Max", marker: { fillColor: mColor } } ); }); let statCoef = []; for (col = 0; col < 5; col++) { statCoef.push([]); for (line = 0; line < chartsNbr; line++) { statCoef[col].push([(x = stat[line][col]), (y = line)]); } }小提琴圖表是一種方便的工具,可以直觀地顯示數(shù)據(jù)分布和概率密度。我們鼓勵(lì)您在直方圖和箱形圖之外的項(xiàng)目中使用小提琴圖類(lèi)型,因?yàn)檫@些圖類(lèi)型中的每一種都揭示了您的數(shù)據(jù)秘密。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: