亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

Chart.js 輕量級HTML5圖表繪制工具庫(知識整理)

2019-11-19 13:47:55
字體:
來源:轉載
供稿:網友

Chart.js:用不同的方式讓你的數據變得可視化。每種類型的圖表都有動畫效果,并且看上去非常棒,即便是在retina屏幕上?;贖TML5 canvas技術,Chart.js不依賴任何外部工具庫,輕量級(壓縮之后僅有4.5k)。值得推薦學習!

GitHub源碼: https://github.com/nnnick/Chart.js

Chart.js文檔:http://www.bootcss.com/p/chart.js/

步驟:

html部分:

<canvas id="myChart" width="400" height="400"></canvas>

javascript部分:

  1. 引入Chart.js文件;
  2. 創建圖表:實例化Chart對象(獲取DOM節點取得2d context環境后實例化);
  3. 實例化Chart對象后就繼續創建具體類型的圖表了;

曲線圖(Line chart):

html:

<canvas id="myChart" width="600" height="400"></canvas>

javascript:(引入及兩種使用方式)

<script src="js/Chart.min.js"></script>
<script type="text/javascript"> //方式一: var ctx = document.getElementById("myChart").getContext("2d");; var MyNewChart = new Chart(ctx).Line(data); //這種方式是只加載數據集,(缺省options)不修改默認參數(簡稱法一) //數據結構(數據參數設置) var data = { //折線圖需要為每個數據點設置一標簽。這是顯示在X軸上。 labels: ["January", "February", "March", "April", "May", "June", "July"], //數據集(y軸數據范圍隨數據集合中的data中的最大或最小數據而動態改變的) datasets: [{   fillColor: "rgba(220,220,220,0.5)", //背景填充色   strokeColor: "rgba(220,220,220,1)", //路徑顏色   pointColor: "rgba(220,220,220,1)", //數據點顏色   pointStrokeColor: "#fff", //數據點邊框顏色   data: [10, 59, 90, 81, 56, 55, 40] //對象數據  }, {   fillColor: "rgba(151,187,205,0.5)",   strokeColor: "rgba(151,187,205,1)",   pointColor: "rgba(151,187,205,1)",   pointStrokeColor: "#fff",   data: [28, 48, 40, 19, 96, 27, 200]  }]  };</script>

數據結構:

//數據結構(數據參數設置) var data = { //折線圖需要為每個數據點設置一標簽。這是顯示在X軸上。 labels: ["January", "February", "March", "April", "May", "June", "July"], //數據集(y軸數據范圍隨數據集合中的data中的最大或最小數據而動態改變的) datasets: [{   fillColor: "rgba(220,220,220,0.5)", //背景填充色   strokeColor: "rgba(220,220,220,1)", //路徑顏色   pointColor: "rgba(220,220,220,1)", //數據點顏色   pointStrokeColor: "#fff", //數據點邊框顏色   data: [10, 59, 90, 81, 56, 55, 40] //對象數據  }, {   fillColor: "rgba(151,187,205,0.5)",   strokeColor: "rgba(151,187,205,1)",   pointColor: "rgba(151,187,205,1)",   pointStrokeColor: "#fff",   data: [28, 48, 40, 19, 96, 27, 200]  }]  };

圖標參數:

Line.defaults = {  //網格線是否在數據線的上面  scaleOverlay : false,  //是否用硬編碼重寫y軸網格線  scaleOverride : false,  //** Required if scaleOverride is true **  //y軸刻度的個數  scaleSteps : null,  //y軸每個刻度的寬度  scaleStepWidth : 20,  // Y 軸的起始值  scaleStartValue : null,  // Y/X軸的顏色  scaleLineColor: "rgba(0,0,0,.1)",   // X,Y軸的寬度  scaleLineWidth: 1,  // 刻度是否顯示標簽, 即Y軸上是否顯示文字  scaleShowLabels: true,  // Y軸上的刻度,即文字  scaleLabel: "<%=value%>",  // 字體  scaleFontFamily: "'Arial'",  // 文字大小  scaleFontSize: 16,  // 文字樣式  scaleFontStyle: "normal",  // 文字顏色  scaleFontColor: "#666",  // 是否顯示網格  scaleShowGridLines: true,  // 網格顏色  scaleGridLineColor: "rgba(0,0,0,.05)",  // 網格寬度  scaleGridLineWidth:2,  // 是否使用貝塞爾曲線? 即:線條是否彎曲  bezierCurve: true,  // 是否顯示點數  pointDot: true,  // 圓點的大小  pointDotRadius:5,  // 圓點的筆觸寬度, 即:圓點外層白色大小  pointDotStrokeWidth: 2,  // 數據集行程(連線路徑)  datasetStroke: true,  // 線條的寬度, 即:數據集  datasetStrokeWidth: 2,  // 是否填充數據集  datasetFill: true,  // 是否執行動畫  animation: true,  // 動畫的時間  animationSteps: 60,  // 動畫的特效  animationEasing: "easeOutQuart",  // 動畫完成時的執行函數  /*onAnimationComplete: null*/  }

(表示剛接觸Chart.js,看到這圖表參數整個人都懵了,還全程英文注釋,呵呵~)

理解完圖表參數后,就可以自定義圖表參數啦,下面來看看具體事例用法:

html部分和js文件引入部分省略:(之后的圖表類型也同樣省略!)

<script type="text/javascript">  //同樣數據參數設置  var data = {  //折線圖需要為每個數據點設置一標簽。這是顯示在X軸上。  labels: ["January", "February", "March", "April", "May", "June", "July"],  //這邊的thisId分別對應labels的id   thisIds : [12,22,50,44,99,3,67],  //數據集(y軸數據范圍隨數據集合中的data中的最大或最小數據而動態改變的)  datasets: [{   fillColor: "rgba(220,220,220,0.5)", //背景填充色   strokeColor: "rgba(220,220,220,1)", //路徑顏色   pointColor: "rgba(220,220,220,1)", //數據點顏色   pointStrokeColor: "#fff", //數據點邊框顏色   data: [10, 59, 90, 81, 56, 55, 40] //對象數據  }, {   fillColor: "rgba(151,187,205,0.5)",   strokeColor: "rgba(151,187,205,1)",   pointColor: "rgba(151,187,205,1)",   pointStrokeColor: "#fff",   data: [28, 48, 40, 19, 96, 27, 200]  }]  }; window.onload = function() {   var ctx = document.getElementById("myChart").getContext("2d");;   //方式二:傳入對象字面量去修改默認圖標參數,自定義圖表   var MyNewChart = new Chart(ctx).Line(data, {   // 網格顏色   scaleGridLineColor: "rgba(255,0,0,1)",   // Y/X軸的顏色   scaleLineColor: "rgba(0,0,0,.1)",   // 文字大小   scaleFontSize: 16,   // 文字顏色   scaleFontColor: "#666",   // 網格顏色   scaleGridLineColor: "rgba(0,0,0,.05)",   // 是否使用貝塞爾曲線? 即:線條是否彎曲   // 是否執行動畫   animation: true,   // 動畫的時間   animationSteps: 60,   // 動畫完成時的執行函數   onAnimationComplete: function(){    console.log("給x軸的lable對應的id:");    console.log(data.thisIds);   }   });  }</script>

效果圖:

柱狀圖:

new Chart(ctx).Bar(data,options);//簡記,options可缺省

數據結構:

var data = { labels : ["January","February","March","April","May","June","July"], datasets : [ {  fillColor : "rgba(220,220,220,0.5)",  strokeColor : "rgba(220,220,220,1)",  data : [65,59,90,81,56,55,40] }, {  fillColor : "rgba(151,187,205,0.5)",  strokeColor : "rgba(151,187,205,1)",  data : [28,48,40,19,96,27,100] } ]}

圖標參數:

Bar.defaults = {  //網格線是否在數據線的上面  scaleOverlay : false,  //是否用硬編碼重寫y軸網格線  scaleOverride : false,  //** Required if scaleOverride is true **  //y軸刻度的個數  scaleSteps : null,  //y軸每個刻度的寬度  scaleStepWidth : null,   //Y軸起始值  scaleStartValue: null,  // Y/X軸的顏色  scaleLineColor: "rgba(0,0,0,.1)",   // X,Y軸的寬度  scaleLineWidth: 1,  // 刻度是否顯示標簽, 即Y軸上是否顯示文字  scaleShowLabels: false,  // Y軸上的刻度,即文字  scaleLabel: "<%=value%>",  // 字體  scaleFontFamily: "'Arial'",   // 文字大小  scaleFontSize: 12,  // 文字樣式  scaleFontStyle: "normal",  // 文字顏色   scaleFontColor: "#666",  // 是否顯示網格  scaleShowGridLines: true,  // 網格顏色  scaleGridLineColor: "rgba(0,0,0,.05)",  // 網格寬度  scaleGridLineWidth: 1,  //Bar Chart圖表特定參數:  //是否繪制柱狀條的邊框  barShowStroke : true,  //柱狀條邊框的寬度  barStrokeWidth : 2,  //柱狀條組之間的間距(過大或過小會出現重疊偏移錯位的效果,請控制合理數值)  barValueSpacing :5,  //每組柱狀條組中柱狀條之間的間距  barDatasetSpacing :5,  // 是否顯示提示  showTooltips: true,   // 是否執行動畫  animation: true,  // 動畫的時間  animationSteps: 60,  // 動畫的特效  animationEasing: "easeOutQuart",  // 動畫完成時的執行函數  onAnimationComplete: null  }

部分javascript實例

var barChart = new Chart(ctx).Bar(data, {   scaleLabel: "$"+"<%=value%>",   //是否繪制柱狀條的邊框   barShowStroke: true,   //柱狀條邊框的寬度   barStrokeWidth: 2,   //柱狀條組之間的間距(過大或過小會出現重疊偏移錯位的效果,請控制合理數值)   barValueSpacing: 5,   //每組柱狀條組中柱狀條之間的間距   barDatasetSpacing: 5,   });

效果圖:

餅圖:

javascript:

new Chart(ctx).Pie(data,options);

數據結構:

var data=[  {  value:40,  color:"#21F0EA",//背景色  highlight:"#79E8E5",//高亮背景顏色  label:'javascript'//文字標簽  },{  value:60,  color:"#E0E4CC",  highlight:"#EAEDD8",  label:'jquery'  },{  value:100,  color:"#69D2E7",  highlight:"#83E5F7",  label:'html'  } ];

圖標參數:

Pie.defaults = {   //是否顯示每段行程(即扇形區,不為true則無法看到后面設置的邊框顏色)   segmentShowStroke : true,   //設置每段行程的邊框顏色   segmentStrokeColor : "red",   //心啊是每段扇區邊框的寬度   segmentStrokeWidth :2,   //Boolean - 是否執行動畫   animation : true,   //Number - 動畫時間   animationSteps : 100,   //String - 動畫的效果   animationEasing : "easeOutBounce",   //Boolean -是否旋轉動畫   animateRotate : true,   //Boolean - 是否動畫縮放餅圖中心(效果不錯)   animateScale : true,   //Function - 火動畫完成時執行的函數   onAnimationComplete : null  }

部分javascript實例:

var ctx=document.getElementById("pieChart").getContext("2d");window.pieChart=new Chart(ctx).Pie(data,{   //是否顯示每段行程(即扇形區,不為true則無法看到后面設置的邊框顏色)   segmentShowStroke : true,   //設置每段行程的邊框顏色   segmentStrokeColor : "red",   //每段扇區邊框的寬度   segmentStrokeWidth :2,   //Boolean - 是否執行動畫   animation : true,   //Number - 動畫時間   animationSteps : 100,   //String - 動畫的效果   animationEasing : "easeOutBounce",   //Boolean -是否旋轉動畫   animateRotate : true,   //Boolean - 是否動畫縮放餅圖中心(效果不錯)   animateScale : true,   //Function - 動畫完成時執行的函數   //onAnimationComplete : null  });

效果圖:

環形圖:

javascript:

new Chart(ctx).Doughnut(data,options);

數據結構:

//數據結構(與餅圖相似)  var data = [{  value: 30,  color: "#F7464A",  highlight: "#FA7C7C",  label: "angularJS"  }, {  value: 50,  color: "#E2EAE9",  highlight: "#F2F5F5",  label: "juqery"  }, {  value: 100,  color: "#D4CCC5",  hightlight: "#DBD6D1",  label: "javascript"  }, {  value: 40,  color: "#949FB1",  highlight: "#AFBCCE",  label: "nodeJS"  }, {  value: 120,  color: "#4D5360",  highlight: "#767C86",  label: "html"  }];

圖標參數:

Doughnut.defaults={   //是否顯示每段行程(即環形區,不為true則無法看到后面設置的邊框顏色)   segmentShowStroke: true,   //設置每段行程的邊框顏色   segmentStrokeColor: "#fff",   //設置每段環形的邊框寬度   segmentStrokeWidth: 2,   //圖標中心剪切圓的比例(0為餅圖,接近100則環形寬度越?。?  percentageInnerCutout: 50,   //是否執行動畫   animation: true,   //執行動畫時間   animationSteps: 100,   //動畫特效   animationEasing: "easeOutBounce",   //是否旋轉動畫   animateRotate: true,   //是否縮放圖表中心   animateScale: true,   //動畫完成時的回調函數//   onAnimationComplete: null  }

效果圖:

Chart.js總共有六大圖表:除此之外,還有剩下兩種:雷達圖或蛛網圖、極地區域圖,讀者請自行參考:Chart.js中文文檔

那么,問題來了?。繄D表的圖例怎么辦?這貨在應用中也是很常用的!經過多次的查閱,找到以下方法實現圖例部分,膜拜一下各路大神先!除此之外,還可以動畫完成后將各組數據自動顯示,而不用手動查看各組數據!

直接上各部分代碼:

html部分:

<h2>柱狀圖</h2><canvas id="barChart" width="400" height="300"></canvas><!--這里添加了用來放置圖例的div標簽--><div id="legend"></div>

css部分:(不設置基礎樣式的話,可能看不出預期的效果)

 <style>  ul,li{  list-style-type:none;;  }  ul>li{  margin:5px auto;  font-family: "微軟雅黑";  }  span{  display: inline-block;  width:20px;height:20px;line-height: 20px;  vertical-align:middle;  margin-right:5px;  } </style>

javascript部分:

window.onload = function() {   var ctx = document.getElementById("barChart").getContext("2d");   var barChart = new Chart(ctx).Bar(data, {   showTooltips: false, // 是否顯示提示,這里需要設置為false   //模板   legendTemplate:    '<ul class=/"<%=name.toLowerCase()%>-legend/">'+   '<% for (var i=0; i<datasets.length; i++){%>'+   '<li><span style=/"background-color:<%=datasets[i].fillColor%>/"></span>'+   '<%if(datasets[i].label){%><%=datasets[i].label%><%}%></li>'+   '<%}%>'+   '</ul>',   onAnimationComplete: function() {//動畫完成后顯示對應的數據    var ctx = this.chart.ctx;    ctx.font = this.scale.font;    ctx.fillStyle = this.scale.textColor;    ctx.textAlign = 'center';    ctx.textBaseline = 'bottom';    this.datasets.forEach(function(dataset) {    dataset.bars.forEach(function(bar) {     ctx.fillText(bar.value, bar.x, bar.y);    });    });   }   });   var legend = document.getElementById('legend');   // 圖例   legend.innerHTML = barChart.generateLegend();  } //數據結構:  var data = {  labels: ["一月", "二月", "三月", "四月", "五月", "六月", "七月"],  datasets: [{   fillColor: "rgba(220,220,220,0.5)",   strokeColor: "rgba(220,220,220,1)",   data: [65, 59, 90, 81, 56, 55, 40],   label: "本月銷售額"http://圖例標簽  },{   fillColor: "#69D2E7",   strokeColor: "#B2E5ED",   data: [54, 99, 72, 61, 86, 65, 84],   label: "本季度銷售額"  }]  };

效果圖:

總結:

Chart.js中的六種圖表,js部分大致分為數據結構、圖表參數(通用參數以及各自特有參數)和實例化引用三大部分,而數據的動態加載可在數據結構中的data屬性傳入json等數據文件或變量。在多處實戰中可能需要用到數據圖表,呈現給用戶更好的用戶體驗,此次學習簡記以便日后復習、使用!希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩动漫免费观看电视剧高清| 日本韩国在线不卡| 亚洲男人av在线| 亚洲一区中文字幕| 欧美精品日韩三级| 91精品国产色综合| 欧美另类老女人| www亚洲欧美| 久久天天躁狠狠躁夜夜躁| 91国产美女在线观看| 国产精品自产拍在线观看中文| 精品日本美女福利在线观看| 欧美日韩亚洲视频一区| 亚洲精品久久久久久久久久久久久| 国产一区二区香蕉| 久久久亚洲欧洲日产国码aⅴ| 日韩欧美亚洲综合| 精品国产乱码久久久久久天美| 中文字幕久久久av一区| 成人黄色片在线| 精品久久久久久中文字幕大豆网| 亚洲日韩欧美视频一区| 国产精品91久久| 亚洲а∨天堂久久精品9966| 永久免费精品影视网站| 欧美另类极品videosbest最新版本| 91精品国产777在线观看| 亚洲视频在线观看网站| 日韩一级裸体免费视频| 国产91热爆ts人妖在线| 66m—66摸成人免费视频| 亚洲精品欧美一区二区三区| 91av网站在线播放| 日本亚洲欧洲色| 一道本无吗dⅴd在线播放一区| 亚洲精品乱码久久久久久金桔影视| 亚洲va欧美va国产综合久久| 国产精品小说在线| 欧美一级电影免费在线观看| 中文字幕亚洲精品| 亚洲free性xxxx护士hd| 91精品久久久久久久久青青| 国产精品成人观看视频国产奇米| 成人黄色激情网| 亚洲精品黄网在线观看| 日韩在线中文字| 操91在线视频| 日韩有码在线电影| 亚洲精品美女久久久久| 国产精品久久久久秋霞鲁丝| 国产丝袜一区二区三区免费视频| 中文字幕精品国产| 亚洲毛片在线观看.| 亚洲偷欧美偷国内偷| 国产一区二区三区视频在线观看| xxxxxxxxx欧美| 久久免费视频网站| 亚洲精品国产精品国自产观看浪潮| 人人爽久久涩噜噜噜网站| 91精品在线观| 午夜精品视频在线| 色偷偷偷综合中文字幕;dd| 久久综合免费视频| 精品国内自产拍在线观看| 日韩影视在线观看| 欧美不卡视频一区发布| 国产精品电影久久久久电影网| 亚洲人成电影网站色www| 国产丝袜一区二区三区免费视频| 国产欧美一区二区三区久久人妖| 中文字幕亚洲无线码a| 欧美成人亚洲成人日韩成人| 91久久中文字幕| 91精品国产乱码久久久久久蜜臀| 欧美富婆性猛交| 久久777国产线看观看精品| 国产suv精品一区二区| 亚洲色图校园春色| 久久精品夜夜夜夜夜久久| 欧美交受高潮1| 欧美亚洲在线视频| 国产日韩亚洲欧美| 欧美高跟鞋交xxxxhd| 成人午夜小视频| 懂色av中文一区二区三区天美| 亚洲国产日韩欧美在线图片| 欧美黑人狂野猛交老妇| 国产亚洲福利一区| 久久亚洲春色中文字幕| 日韩国产精品视频| 国产精品久久久久久影视| 中文字幕精品影院| 色综合天天狠天天透天天伊人| 欧美成人在线免费视频| 欧美性生交大片免网| 欧美激情欧美狂野欧美精品| 亚洲成年人在线播放| 欧美日韩一区二区免费在线观看| xvideos亚洲人网站| 日韩不卡中文字幕| 亚洲精品中文字幕女同| 97精品国产97久久久久久春色| 91成人国产在线观看| 国产精品久久网| 国产欧美日韩高清| 欧美日本国产在线| 久久频这里精品99香蕉| 国产日韩一区在线| 91免费看片网站| 欧美午夜激情视频| 久久精品视频在线| 91精品久久久久久久久久久久久| 日本19禁啪啪免费观看www| 91精品国产成人| 亚洲性xxxx| 日韩av在线免费播放| 5252色成人免费视频| 亚洲成色777777在线观看影院| 欧美精品免费在线| 日本免费一区二区三区视频观看| 成人午夜一级二级三级| 亚洲第一区第二区| 国产精品三级久久久久久电影| 欧美视频第一页| 日韩精品黄色网| 亚洲男人7777| 7777免费精品视频| 国产精品女视频| 久久亚洲精品毛片| 午夜精品久久久久久久久久久久久| 成人看片人aa| 国产精品久久久久久久久免费看| 欧美性xxxx18| 久久久亚洲影院你懂的| 在线视频精品一| 日韩在线观看电影| 久久久亚洲欧洲日产国码aⅴ| 国产日韩欧美成人| 国产精品亚洲美女av网站| 91免费的视频在线播放| 久久久久久久久亚洲| 久久在线精品视频| 北条麻妃久久精品| 国产精品视频资源| 日本一区二区不卡| 国产视频在线一区二区| 亚洲精品美女在线观看| 欧美最顶级丰满的aⅴ艳星| 日韩视频―中文字幕| 亚洲欧美日韩国产中文| 91国产视频在线| 国产在线观看精品| 久久天天躁夜夜躁狠狠躁2022| 精品久久中文字幕| 欧美美女操人视频| 精品自在线视频| 91精品国产91久久| 亚洲第一福利视频| 91久久久久久久一区二区| 国产成人在线视频| 成人免费xxxxx在线观看| 永久免费毛片在线播放不卡| 98精品在线视频| 欧美精品免费在线|