Chart.js 圖表庫(kù)

提供很多圖表樣式

更多精彩

官方地址

  1. chart-js
  2. chart-sample

使用方法

  1. 這一塊官網(wǎng)講的還比較清晰契吉,參見 getting-started
  2. 需要注意的是提供的 <canvas> 需要有默認(rèn)寬高,否則會(huì)渲染報(bào)錯(cuò)

數(shù)據(jù)結(jié)構(gòu)

  1. ChartJs的數(shù)據(jù)類型分為 Line-線形圖 诡渴、Bar-柱狀圖 捐晶、Radar-雷達(dá)圖Doughnut-中空餅圖 玩徊、Pie-實(shí)心餅圖 租悄、Bubble-氣泡圖Scatter 恩袱、Area 泣棋、Mixed
  2. 類型很多,但我認(rèn)為官網(wǎng)文檔中對(duì)于每種類型的數(shù)據(jù)結(jié)構(gòu)描述實(shí)在是太糟糕了畔塔,通常需要打開控制臺(tái)查看樣例的代碼結(jié)構(gòu)才能得知
  3. 以下列出一些常用的數(shù)據(jù)結(jié)構(gòu)

Line-線形圖 / Bar-柱狀圖

  1. 線形圖和柱狀圖的數(shù)據(jù)格式基本一致
  2. 柱狀圖對(duì)背景色和邊框色傳入數(shù)組潭辈,可以讓每個(gè)柱狀顯示不一樣的顏色
  3. 線形圖如果沒(méi)有多色的需求鸯屿,對(duì)背景色和邊框可以直接傳入單值
{
    "labels": ["Java 軟件開發(fā)初級(jí)", "實(shí)訓(xùn)階段性收費(fèi)稍微測(cè)試一下", "免費(fèi)的隨便找一個(gè)"],
    "datasets": [{
        "label": "進(jìn)度匯總",
        "fill": false,
        "data": [10, 30, 66],
        "borderWidth": 1,
        "backgroundColor": ["rgba(255, 99, 132, 0.2)", "rgba(255, 159, 64, 0.2)", "rgba(255, 205, 86, 0.2)"],
        "borderColor": ["rgb(255, 99, 132)", "rgb(255, 159, 64)", "rgb(255, 205, 86)"]
    }]
}

Doughnut-中空餅圖 / Pie-實(shí)心餅圖

{
    "datasets": [{
        "data": [1, 2, 3],
        "backgroundColor": ["rgb(255, 99, 132)", "rgb(255, 159, 64)", "rgb(255, 205, 86)"],
        "label": "Dataset 1"
    }],
    "labels": [1, 2, 3]
}

常用屬性和方法

  1. 同樣的,官方文檔中對(duì)于配置屬性的講解也非常讓人頭疼把敢,通常需要什么內(nèi)容寄摆,都是去例子中查找控制臺(tái)才能找到
  2. 以下列舉一些常用的屬性和方法

頂層屬性配置

  1. ctx 是獲取到的 <canvas> 實(shí)例
  2. cfg 是圖表的頂層屬性配置
    1. type 是圖表的類型,參照前面數(shù)據(jù)結(jié)構(gòu)中列舉的類型傳入即可修赞,注意單詞是全小寫
    2. data 是前面數(shù)據(jù)結(jié)構(gòu)中提到的各種類型圖表的具體數(shù)據(jù)婶恼,格式正確傳入即可
    3. options 才是真正控制圖表顯示樣式的具體配置,屬性非常繁雜柏副,官方描述特別混亂
let cfg = {
  type: 'line',
  data: data,
  options: {}
}

new Chart(ctx, cfg)

顯示圖表的標(biāo)題

  1. 官方文檔在此處 options-title
  2. display 默認(rèn)值是false 勾邦,改為true才會(huì)顯示標(biāo)題
  3. text 標(biāo)題內(nèi)容
  4. position 是標(biāo)題位置,默認(rèn)值是top 割择,支持 top 眷篇、rightbottom 荔泳、left
options: {
  title: {
    display: true,
    text: '圖表標(biāo)題',
    position: 'bottom'
  }
}

對(duì)徽章的控制項(xiàng)

  1. 官方文檔在此處 options-legend
  2. 徽章其實(shí)就是圖表中用來(lái)標(biāo)注每個(gè)dataset的元素蕉饼,顯示格式為 顏色-描述
  3. display 默認(rèn)值是true ,改為false就可以隱藏
  4. position 是徽章位置玛歌,默認(rèn)值是top 昧港,支持 topright 沾鳄、bottom 慨飘、left
options: {
  legend: {
    display: true,
    position: 'right'
  }
}

讓Y軸的值從0開始

  1. 官方文檔在此處 options-scales-ticks
options: {
  scales: {
    yAxes: [{
      ticks: {
        beginAtZero: true
      }
    }]
  }
}

隱藏X軸標(biāo)題

  1. 官方文檔在此處 options-scales-ticks
options: {
  scales: {
    xAxes: [{
      ticks: {
        display: false
      }
    }]
  }
}

更新數(shù)據(jù)內(nèi)容

  1. 官方文檔在此處 update-chart
var chart = new Chart(ctx, cfg)

chart.data = data
chart.update()

監(jiān)聽點(diǎn)擊事件

  1. 官方文檔在此處 event-click
  2. 同樣的,官方文檔對(duì)于事件監(jiān)聽的描述非常不詳細(xì)译荞,甚至連點(diǎn)擊事件的形參都沒(méi)有描述
  3. 在官方示例中暫時(shí)也沒(méi)有找到對(duì)事件監(jiān)聽的內(nèi)容
  4. 需要注意的事雖然點(diǎn)擊的需求一般都是點(diǎn)擊某個(gè)具體的數(shù)據(jù)值瓤的,但ChartJs的點(diǎn)擊事情監(jiān)聽是整個(gè)容器
    • 如果點(diǎn)擊的是某個(gè)數(shù)據(jù)值,則會(huì)返回一個(gè)有內(nèi)容的數(shù)組吞歼,否則會(huì)返回空數(shù)組
  5. 返回的數(shù)據(jù)值對(duì)象本身意義也不明確圈膏,個(gè)人認(rèn)為有用的值就是索引 chart[0]._index
  6. 之后可以通過(guò)索引到整個(gè)數(shù)據(jù)源中去找到對(duì)應(yīng)的值
  7. 以下代碼中的 threadChart 是初始化圖表后返回的圖表對(duì)象,需要再外部指定
options: {
  // 監(jiān)聽事件類型
  events: ['click'],
  onClick: function (e, chart) {
    // 獲取點(diǎn)擊的對(duì)象
    var point = chart[0]

    // 點(diǎn)擊空白位置直接返回
    if (point === undefined) {
      return
    }

    // 獲取點(diǎn)擊對(duì)象的索引
    var index = point._index
    // 在數(shù)據(jù)源中找到對(duì)應(yīng)索引的yLabel值
    var currentDate = threadChart.data.labels[index]

    console.log(currentDate)
  }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末篙骡,一起剝皮案震驚了整個(gè)濱河市稽坤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌糯俗,老刑警劉巖尿褪,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異得湘,居然都是意外死亡杖玲,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門淘正,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)摆马,“玉大人臼闻,你說(shuō)我怎么就攤上這事《诓桑” “怎么了述呐?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蕉毯。 經(jīng)常有香客問(wèn)我乓搬,道長(zhǎng),這世上最難降的妖魔是什么恕刘? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任缤谎,我火速辦了婚禮,結(jié)果婚禮上褐着,老公的妹妹穿的比我還像新娘。我一直安慰自己托呕,他們只是感情好含蓉,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著项郊,像睡著了一般馅扣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上着降,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天差油,我揣著相機(jī)與錄音,去河邊找鬼任洞。 笑死蓄喇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的交掏。 我是一名探鬼主播妆偏,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼盅弛!你這毒婦竟也來(lái)了钱骂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤挪鹏,失蹤者是張志新(化名)和其女友劉穎见秽,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體讨盒,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡解取,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了催植。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肮蛹。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡勺择,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伦忠,到底是詐尸還是另有隱情省核,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布昆码,位于F島的核電站气忠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏赋咽。R本人自食惡果不足惜旧噪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望脓匿。 院中可真熱鬧淘钟,春花似錦、人聲如沸陪毡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)毡琉。三九已至铁瞒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間桅滋,已是汗流浹背慧耍。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丐谋,地道東北人芍碧。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像笋鄙,于是被迫代替她去往敵國(guó)和親师枣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 在世界各地留下足跡閱讀 144評(píng)論 0 0
  • 我是日記星球226號(hào)星寶寶萧落,我正在參加21天蛻變之旅第八期践美,這是我第82篇原創(chuàng)日記。二十年的大型三甲醫(yī)院工作經(jīng)歷讓...
    天鳴老師閱讀 523評(píng)論 2 2
  • 畢偉 2018年7月31日讀《干法》 學(xué)習(xí)要點(diǎn):將不可能變?yōu)榭赡?學(xué)習(xí)感悟:能力要用相來(lái)進(jìn)行時(shí)找岖,以這種姿態(tài)面對(duì)人...
    畢偉_561e閱讀 121評(píng)論 0 0
  • 一座奇園许布,百樣奇花兴革,一部奇書,百位奇女。說(shuō)不盡的紅樓夢(mèng)影杂曲,道不完的癡兒怨女庶艾,且來(lái)看那浮沉夢(mèng)海的海棠花。 ...
    漪禾渡江閱讀 1,348評(píng)論 28 42