资讯专栏INFORMATION COLUMN

数据可视化--Chart.js使用总结

KaltZK / 670人阅读

摘要:概述是一个图表库,使用元素来展示各式各样的客户端图表,支持折线图柱形图雷达图饼图环形图等。比较轻量版本仅,且不依赖其他库。附上解决思路是每次切换时移除旧的画布并新建画布,代码如下外的容器节点

概述

Chart.js是一个HTML5图表库,使用canvas元素来展示各式各样的客户端图表,支持折线图、柱形图、雷达图、饼图、环形图等。在每种图表中,还包含了大量的自定义选项,包括动画展示形式。 Chart.js比较轻量(gzip版本仅4.5k),且不依赖其他库。
Chart.js官网: 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",//数据点的填充色
        pointBorderColor: "blue",//数据点边框颜色
        pointBorderWidth: 2,//数据点边框的宽度
        pointRadius: 2, //数据点的大小
        pointStyle:"circle",//"cross""crossRot""dash""line""rect""rectRounded""rectRot""star""triangle"
        showLine: true, //如果为false,两数据点之间的线不会渲染
        spanGaps: true, //如果为false,NaN data会在折线上有断点
        steppedLine: true,//可选值[false, true, "before", "after"],为true,折线图的曲线会成直角,
        //将要在图上展示的数据,数组中的每一个object代表一条线
        datasets: [{
       // 颜色的使用类似于CSS,你也可以使用RGB、HEX或者HSL
       // rgba颜色中最后一个值代表透明度
       // 填充颜色
            fillColor : "rgba(220,220,220,0.5)",
       // 线的颜色
            strokeColor : "rgba(220,220,220,1)",
       // 点的填充颜色
            pointColor : "rgba(220,220,220,1)",
        // 点的边线颜色
            pointStrokeColor : "#fff",
        // 与x轴标示对应的数据
            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,//图表是否响应式
        //图表标题相关配置  
        title: {
            display: true,
            text: "状态历史图",
            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 `状态: ${tooltipItem.yLabel === 0 ? "离线" : "在线"}`;
                }
            }
    
        },
        //坐标轴
        scales: {
            scaleLabel: {
                display: true,
                labelString: "状态"
            },
            ticks: {
                fontSize: 18,
                fontColor: "red",
            },
            //y轴配置
            yAxes: [{
                type: "linear",
                labels: [0,1],//y轴上的显示的数据
                beginAtZero: true,//是否从零开始
                //轴文字控制
                ticks: {
                    //可自定义y轴显示上显示的文字
                    callback(value, index, values) {
                        return value === 0 ? "离线" : "在线" 
                    },
                    min: 0,//最小值,记得轴的type要为linear
                    max: 1,//最大值,记得轴的type要为linear
                    stepSize: 1,//数字之间的间隔,设置之后例如: [2,3,4]
                }
            }],
            //x轴配置
            xAxes: [{
                type: "category",
                labels: dateList,
                distribution: "linear"
            }]
        },
        //整个图表配置
        layout: {
            //设置图表的padding值
            padding: {
                left: 50,
                right: 0,
                top: 20,
                bottom: 0
            }
        }
    }
});

还有其它类型的图表配置就不一一赘述了,使用方式都大同小异。

使用中遇到过的问题

在切换时间重新渲染图表时遇到,当切换到昨天,鼠标hover图表时,图表上折线会出现今天的折线,猜测原因是在切换tab的时候上一个Chart实例还存在,导致冲突出现这个问题。附上解决思路是:每次切换tab时移除旧的canvas画布并新建画布,代码如下:

resetCanvas() {
    let html = ""
    let chartsContainer = document.getElementById("chartsContainer");//canvas外的容器
    let myChart = document.getElementById("myChart")//canvas节点
    statusCharts.removeChild(myChart);
    statusCharts.innerHTML = html
    myChart = document.getElementById("myChart");
    statusCharts.appendChild(myChart);
},

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/90242.html

相关文章

  • 前端开发者常用的9个JavaScript图表库

    摘要:使用来呈现图表。允许用户在应用程序中创建美观的可复用的图表。它是基于创建的,是一个以数据为中心的图表库,可以改进数据可视化的效果。非常轻巧,并使用元素来创建很奇特的图表。是库中较为古老的图表库之一。总结以上介绍的库都是高质量的图表库。 当前,数据可视化已经成为数据科学领域非常重要的一部分。不同网络系统中产生的数据,都需要经过适当的可视化处理,以便更好的呈现给用户读取和分析。 对任何一个...

    luck 评论0 收藏0
  • 使用 Vue.jsChart.js 制作绚丽多彩的图表

    摘要:但是大多数开箱即用的解决方案用默认的选项并不能做出很绚丽的图表。这篇文章中,我会教你如何自定义选项来制作很酷的图表。我们使用来作为的打包器。代码中,使用了一些实例数据和可选参数传递给的数据对象,并且设置,使得图表会充满外层容器。 showImg(https://segmentfault.com/img/remote/1460000009049816?w=1000&h=424); 本文...

    刘厚水 评论0 收藏0
  • 来自Chart.js的几个JS helper function

    摘要:最近兼职的项目里面因为要用进行数据的交互式可视化,用比较多,也踩了不少坑。内部用这个进行之类的时,先深拷贝然后再扩展,比较方便。可以看出直接给原型进行扩展,写起来非常简洁。 最近兼职的项目里面因为要用charts进行数据的交互式可视化,用Chart.js比较多,也踩了不少坑。为了改bug提pr外加学习一下提高姿势水平花了一点时间看了下源码,发现一些比较有用简介的helper funct...

    Kross 评论0 收藏0
  • 2018年最佳JavaScript数据视化和图表库

    摘要:它有什么图表加粗文字如何使用这个图表库可以通过存储库下载或通过包管理器安装。数据可以直接从文件加载到图表中。它有什么图表如何使用该库可在包管理器和他们自己的内容传送网络中使用。该库专为风格的数据可视化而设计,提供一系列高度可配置的图表。 现在有很多图表库,但哪一个最好用?这可能取决于许多因素,如业务需求,数据类型,图表本身的目的等等。在本文中,每个JavaScript图表库将与一些关键...

    terasum 评论0 收藏0
  • 2018年最佳JavaScript数据视化和图表库

    摘要:它有什么图表加粗文字如何使用这个图表库可以通过存储库下载或通过包管理器安装。数据可以直接从文件加载到图表中。它有什么图表如何使用该库可在包管理器和他们自己的内容传送网络中使用。该库专为风格的数据可视化而设计,提供一系列高度可配置的图表。 现在有很多图表库,但哪一个最好用?这可能取决于许多因素,如业务需求,数据类型,图表本身的目的等等。在本文中,每个JavaScript图表库将与一些关键...

    dreambei 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<