箱線圖通常被用做顯示數據分散狀況。具體是計算一組數據的中位數
、25%分位數
、75%分位數
、上邊界
、下邊界
,來將數據從大到小排列,直觀展現數據總體的分佈狀況。
大部分正常數據在箱體中,上下邊界以外的就是異常數據了。javascript
上下邊界的計算公式是:html
UpperLimit=Q3+1.5IQR=75%分位數+(75%分位數-25%分位數)1.5
LowerLimit=Q1-1.5IQR=25%分位數-(75%分位數-25%分位數)1.5
參數說明:
1.Q1表示下四分位數,即25%分位數;Q3爲上四分位數,即75%分位數;IQR表示上下四分位差,係數1.5是一種通過大量分析和經驗積累起來的標準,通常狀況下不作調整。
2.分位數的參數可根據具體預警結果調整:25%和75%,是比較靈敏的條件,在這種條件下,多達25%的數據能夠變得任意遠而不會很大地擾動四分位。具體業務中可結合擬合結果自行調整爲其餘分位java
使用echarts時,這些計算經過調用echarts.dataTool.prepareBoxplotData()
來完成。git
說到這裏,有一個預警,繪製箱線圖除了要下載echart.js
以外,還須要引入dataTool.js
,不然瀏覽器會報錯:Uncaught TypeError: Cannot read property 'prepareBoxplotData' of undefined(…)
。github
dataTool.js
能夠到github上下載。數組
echart官網給出的箱線圖示例有兩種。瀏覽器
一種是單值對應
(樣本元素有一組對應的值數據):
數據結構

另外一種是多值對應
(樣本元素有多個對應的值數據):
echarts
單值對應的數據結構比較簡單,一個樣本信息的數據存儲到對應的一個數組裏,這些數組又存儲在一個大數組裏。而後用echarts.dataTool.prepareBoxplotData()
處理這個大數組。dom
舉一個栗子:線上地址在這裏

兩種性別的三種基因含量表。(數據純虛構)
那要提供什麼樣的數據才能使用echart生成對應的箱線圖?
再來看一下echart官網給出栗子數據,是經過三個for循環隨機生成的。
data = []; for (var seriesIndex = 0; seriesIndex < 5; seriesIndex++) { var seriesData = []; for (var i = 0; i < 18; i++) { var cate = []; for (var j = 0; j < 100; j++) { cate.push(Math.random() * 200); } seriesData.push(cate); } data.push(echarts.dataTool.prepareBoxplotData(seriesData)); }
經過在控制檯console.log(data)
,console.log(seriesData)
,console.log(cate)
,
能夠看出外層的循環是echarts.dataTool.prepareBoxplotData()
執行的次數=5,能夠理解爲每一個樣本有5類元素。內部的循環表示有18個樣本,一類元素的樣本數據有100條。
因此要實現的性別基因表的數據結構應該是:

弄清楚數據結構剩下的繪圖操做就是循序漸進了,完整代碼我已提交到github。
====over====