成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

數(shù)據(jù)可視化--Chart.js使用總結(jié)

KaltZK / 836人閱讀

摘要:概述是一個(gè)圖表庫,使用元素來展示各式各樣的客戶端圖表,支持折線圖柱形圖雷達(dá)圖餅圖環(huán)形圖等。比較輕量版本僅,且不依賴其他庫。附上解決思路是每次切換時(shí)移除舊的畫布并新建畫布,代碼如下外的容器節(jié)點(diǎn)

概述

Chart.js是一個(gè)HTML5圖表庫,使用canvas元素來展示各式各樣的客戶端圖表,支持折線圖、柱形圖、雷達(dá)圖、餅圖、環(huán)形圖等。在每種圖表中,還包含了大量的自定義選項(xiàng),包括動(dòng)畫展示形式。 Chart.js比較輕量(gzip版本僅4.5k),且不依賴其他庫。
Chart.js官網(wǎng): http://www.chartjs.org/

使用步驟 第一步:安裝

npm:npm install chart.js --save
Bower:bower install chart.js --save
CDN:https://cdnjs.com/libraries/Chart.js

第二步:引入

ES6:

import Chart from "chart.js";
let myChart = new Chart(ctx, {...});

Script Tag:


Common JS:

var Chart = require("chart.js");
var myChart = new Chart(ctx, {...});

Require JS:

require(["path/to/chartjs/dist/Chart.js"], function(Chart){
    var myChart = new Chart(ctx, {...});
});
第三步: 使用


在線查看鏈接:https://codepen.io/lilywang/f...

配置介紹
new Chart(ctx, {
    type: "MyType",
    data: data,
    options: options
});
type

["line","bar", "radar", "polarArea", "doughnut", "pie", "bubble"]

data、options

由于圖表type不同,data的配置也就不同,這里以折線圖的使用方法舉例:

var myLineChart = new Chart(ctx, {
    type: "line",
    data: {
        labels: "red",
        backgroundColor: "blue",//填充色
        borderColor: "green",//曲線邊框色,
        borderWidth: 2,//曲線的寬度
        borderDash: [2, 3],
        fill: true, //
        pointBackgroundColor: "purple",//數(shù)據(jù)點(diǎn)的填充色
        pointBorderColor: "blue",//數(shù)據(jù)點(diǎn)邊框顏色
        pointBorderWidth: 2,//數(shù)據(jù)點(diǎn)邊框的寬度
        pointRadius: 2, //數(shù)據(jù)點(diǎn)的大小
        pointStyle:"circle",//"cross""crossRot""dash""line""rect""rectRounded""rectRot""star""triangle"
        showLine: true, //如果為false,兩數(shù)據(jù)點(diǎn)之間的線不會(huì)渲染
        spanGaps: true, //如果為false,NaN data會(huì)在折線上有斷點(diǎn)
        steppedLine: true,//可選值[false, true, "before", "after"],為true,折線圖的曲線會(huì)成直角,
        //將要在圖上展示的數(shù)據(jù),數(shù)組中的每一個(gè)object代表一條線
        datasets: [{
       // 顏色的使用類似于CSS,你也可以使用RGB、HEX或者HSL
       // rgba顏色中最后一個(gè)值代表透明度
       // 填充顏色
            fillColor : "rgba(220,220,220,0.5)",
       // 線的顏色
            strokeColor : "rgba(220,220,220,1)",
       // 點(diǎn)的填充顏色
            pointColor : "rgba(220,220,220,1)",
        // 點(diǎn)的邊線顏色
            pointStrokeColor : "#fff",
        // 與x軸標(biāo)示對(duì)應(yīng)的數(shù)據(jù)
            data : [65,59,90,81,56,55,40]
        },{
            fillColor : "rgba(151,187,205,0)",
            strokeColor : "rgba(151,187,205,1)",
            pointColor : "rgba(151,187,205,1)",
            pointStrokeColor : "#fff",
            data : [28,48,40,19,96,27,100]
        }]
    }
    options: {
        responsive: true,//圖表是否響應(yīng)式
        //圖表標(biāo)題相關(guān)配置  
        title: {
            display: true,
            text: "狀態(tài)歷史圖",
            fontFamily: "Helvetica",
            padding: 20,
            fontSize: 16,
            lineHeight: 1.2,
        },
        //圖例
        legend: {
            display: false,
        },
        tooltips: {
            titleFontFamily: "Helvetica Neue",
            titleFontSize: 14,
            yPadding: 14,
            xPadding: 8,
            bodyFontSize: 14,
            titleMarginBottom: 10,
            position: "nearest",//tooltips就近顯示
            callbacks: {
                //可自定義tooltips上顯示的文字
                label(tooltipItem, data) {
                    return `狀態(tài): ${tooltipItem.yLabel === 0 ? "離線" : "在線"}`;
                }
            }
    
        },
        //坐標(biāo)軸
        scales: {
            scaleLabel: {
                display: true,
                labelString: "狀態(tài)"
            },
            ticks: {
                fontSize: 18,
                fontColor: "red",
            },
            //y軸配置
            yAxes: [{
                type: "linear",
                labels: [0,1],//y軸上的顯示的數(shù)據(jù)
                beginAtZero: true,//是否從零開始
                //軸文字控制
                ticks: {
                    //可自定義y軸顯示上顯示的文字
                    callback(value, index, values) {
                        return value === 0 ? "離線" : "在線" 
                    },
                    min: 0,//最小值,記得軸的type要為linear
                    max: 1,//最大值,記得軸的type要為linear
                    stepSize: 1,//數(shù)字之間的間隔,設(shè)置之后例如: [2,3,4]
                }
            }],
            //x軸配置
            xAxes: [{
                type: "category",
                labels: dateList,
                distribution: "linear"
            }]
        },
        //整個(gè)圖表配置
        layout: {
            //設(shè)置圖表的padding值
            padding: {
                left: 50,
                right: 0,
                top: 20,
                bottom: 0
            }
        }
    }
});

還有其它類型的圖表配置就不一一贅述了,使用方式都大同小異。

使用中遇到過的問題

在切換時(shí)間重新渲染圖表時(shí)遇到,當(dāng)切換到昨天,鼠標(biāo)hover圖表時(shí),圖表上折線會(huì)出現(xiàn)今天的折線,猜測原因是在切換tab的時(shí)候上一個(gè)Chart實(shí)例還存在,導(dǎo)致沖突出現(xiàn)這個(gè)問題。附上解決思路是:每次切換tab時(shí)移除舊的canvas畫布并新建畫布,代碼如下:

resetCanvas() {
    let html = ""
    let chartsContainer = document.getElementById("chartsContainer");//canvas外的容器
    let myChart = document.getElementById("myChart")//canvas節(jié)點(diǎn)
    statusCharts.removeChild(myChart);
    statusCharts.innerHTML = html
    myChart = document.getElementById("myChart");
    statusCharts.appendChild(myChart);
},

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/90242.html

相關(guān)文章

  • 前端開發(fā)者常用的9個(gè)JavaScript圖表庫

    摘要:使用來呈現(xiàn)圖表。允許用戶在應(yīng)用程序中創(chuàng)建美觀的可復(fù)用的圖表。它是基于創(chuàng)建的,是一個(gè)以數(shù)據(jù)為中心的圖表庫,可以改進(jìn)數(shù)據(jù)可視化的效果。非常輕巧,并使用元素來創(chuàng)建很奇特的圖表。是庫中較為古老的圖表庫之一??偨Y(jié)以上介紹的庫都是高質(zhì)量的圖表庫。 當(dāng)前,數(shù)據(jù)可視化已經(jīng)成為數(shù)據(jù)科學(xué)領(lǐng)域非常重要的一部分。不同網(wǎng)絡(luò)系統(tǒng)中產(chǎn)生的數(shù)據(jù),都需要經(jīng)過適當(dāng)?shù)目梢暬幚?,以便更好的呈現(xiàn)給用戶讀取和分析。 對(duì)任何一個(gè)...

    luck 評(píng)論0 收藏0
  • 使用 Vue.jsChart.js 制作絢麗多彩的圖表

    摘要:但是大多數(shù)開箱即用的解決方案用默認(rèn)的選項(xiàng)并不能做出很絢麗的圖表。這篇文章中,我會(huì)教你如何自定義選項(xiàng)來制作很酷的圖表。我們使用來作為的打包器。代碼中,使用了一些實(shí)例數(shù)據(jù)和可選參數(shù)傳遞給的數(shù)據(jù)對(duì)象,并且設(shè)置,使得圖表會(huì)充滿外層容器。 showImg(https://segmentfault.com/img/remote/1460000009049816?w=1000&h=424); 本文...

    劉厚水 評(píng)論0 收藏0
  • 來自Chart.js的幾個(gè)JS helper function

    摘要:最近兼職的項(xiàng)目里面因?yàn)橐眠M(jìn)行數(shù)據(jù)的交互式可視化,用比較多,也踩了不少坑。內(nèi)部用這個(gè)進(jìn)行之類的時(shí),先深拷貝然后再擴(kuò)展,比較方便??梢钥闯鲋苯咏o原型進(jìn)行擴(kuò)展,寫起來非常簡潔。 最近兼職的項(xiàng)目里面因?yàn)橐胏harts進(jìn)行數(shù)據(jù)的交互式可視化,用Chart.js比較多,也踩了不少坑。為了改bug提pr外加學(xué)習(xí)一下提高姿勢水平花了一點(diǎn)時(shí)間看了下源碼,發(fā)現(xiàn)一些比較有用簡介的helper funct...

    Kross 評(píng)論0 收藏0
  • 2018年最佳JavaScript數(shù)據(jù)視化和圖表庫

    摘要:它有什么圖表加粗文字如何使用這個(gè)圖表庫可以通過存儲(chǔ)庫下載或通過包管理器安裝。數(shù)據(jù)可以直接從文件加載到圖表中。它有什么圖表如何使用該庫可在包管理器和他們自己的內(nèi)容傳送網(wǎng)絡(luò)中使用。該庫專為風(fēng)格的數(shù)據(jù)可視化而設(shè)計(jì),提供一系列高度可配置的圖表。 現(xiàn)在有很多圖表庫,但哪一個(gè)最好用?這可能取決于許多因素,如業(yè)務(wù)需求,數(shù)據(jù)類型,圖表本身的目的等等。在本文中,每個(gè)JavaScript圖表庫將與一些關(guān)鍵...

    terasum 評(píng)論0 收藏0
  • 2018年最佳JavaScript數(shù)據(jù)視化和圖表庫

    摘要:它有什么圖表加粗文字如何使用這個(gè)圖表庫可以通過存儲(chǔ)庫下載或通過包管理器安裝。數(shù)據(jù)可以直接從文件加載到圖表中。它有什么圖表如何使用該庫可在包管理器和他們自己的內(nèi)容傳送網(wǎng)絡(luò)中使用。該庫專為風(fēng)格的數(shù)據(jù)可視化而設(shè)計(jì),提供一系列高度可配置的圖表。 現(xiàn)在有很多圖表庫,但哪一個(gè)最好用?這可能取決于許多因素,如業(yè)務(wù)需求,數(shù)據(jù)類型,圖表本身的目的等等。在本文中,每個(gè)JavaScript圖表庫將與一些關(guān)鍵...

    dreambei 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<