zoukankan      html  css  js  c++  java
  • chart.js使用

    chart.js是一个生成图表的js插件,

    因为项目中有生成图表的需求,看了下百度的echarts和chart.js,echarts很好用,文档比较全blog也不少,还是中文,不过在生成图表用wkhhtmltopdf转PDF的时候有兼容的问题,所以看了下chart.js
    chart.js是分1.x和2.x版本的最新的版本是2.5.0,大家github下包的时候别下master分支包,下tags里的。然后引入的时候别引入src下的chart.js :),会报Uncaught ReferenceError : require is not defined 的错误。。,dist目录才是发布目录。。搞了半天,浪费时间。而且1.x和2.x的用法和options不一样,这里我主要调的2.x的版本
    1.x的docs链接http://www.bootcss.com/p/chart.js/docs/
    2.x的docs链接http://www.chartjs.org/docs/#scales-category-scale
    两个文档都是英文的1.x的注释是网上copy来的,2.x的几个option自己加的,这块中文资料比较少,还加了转图片的代码,貌似图表的大小是由canvas外的div决定的。

    又碰到两个问题,一个是图表适用retina屏的设置如下

    var myChart = echarts.init(document.getElementById('radar'),{
    devicePixelRatio: 5 //devicePixelRatio是指设备的像素比,简单来说就是设备物理像素和独立像素的比例,应该是比例越高图像越清晰
    });

    不过这个设置用在PDF里还是不能高清显示,换了一种方式将图表转换成高分辨率的图片放到PDF里,问题解决了

    var img = new Image();
    img.src = myChart.getDataURL({
      pixelRatio: 5,//图片像素比
      backgroundColor: '#fff'
    });
    $("#radar").html("").prepend(img);
    $("#radar img").css({"width":"414px","height":"300px"});

    具体用法如下

    1.x

      1 <!DOCTYPE html>
      2 <html>
      3 <head>
      4 <meta charset="utf-8">
      5     <title>chart.js 1.x</title>   
      6      <style>
      7      
      8     </style>
      9     
     10 </head>
     11 <script src="Chart.js-1.1.1/Chart.js"></script>
     12 <body>
     13 
     14 <!-- 展示canvas -->
     15 <div style="500px;height:500px;">
     16     <canvas id="myChart"></canvas>
     17 </div>
     18 <script type="text/javascript">
     19     var radarChartData = { 
     20         labels: ["星期一", "星期二", "星期三", "星期四", "星期五","星期六","星期日"], 
     21         datasets: [ 
     22             { 
     23                 label: "", 
     24                 fillColor: "rgba(0,0,0,0)", 
     25                 strokeColor: "rgba(0,0,0,0)", 
     26                 pointColor: "rgba(0,0,0,0)", 
     27                 pointStrokeColor: "rgba(0,0,0,0)", 
     28                 pointHighlightFill: "rgba(0,0,0,0)", 
     29                 pointHighlightStroke: "rgba(0,0,0,0)", 
     30                 data: [15,25,35,45,55,65,75]
     31             }
     32         ]
     33     }; 
     34 var options = {  
     35                   
     36     //Boolean - If we show the scale above the chart data             
     37     scaleOverlay : true,  
     38       
     39     //Boolean - If we want to override with a hard coded scale  
     40     scaleOverride : true,  
     41       
     42     //** Required if scaleOverride is true **  
     43     //Number - The number of steps in a hard coded scale  
     44     scaleSteps : 5,  
     45       
     46     //Number - The value jump in the hard coded scale  
     47     scaleStepWidth : 20,  
     48       
     49     // Y 轴的起始值  
     50     scaleStartValue : null,  
     51   
     52     // Y/X轴的颜色  
     53     scaleLineColor : "rgba(0,0,0,.1)",  
     54       
     55     // X,Y轴的宽度  
     56     scaleLineWidth : 1,  
     57   
     58     // 刻度是否显示标签, 即Y轴上是否显示文字  
     59     scaleShowLabels : true,  
     60       
     61     // Y轴上的刻度,即文字  
     62     scaleLabel : "<%=value%>",  
     63       
     64     // 字体  
     65     scaleFontFamily : "'Arial'",  
     66       
     67     // 文字大小  
     68     scaleFontSize : 12,  
     69       
     70     // 文字样式  
     71     scaleFontStyle : "normal",  
     72       
     73     // 文字颜色  
     74     scaleFontColor : "#666",      
     75       
     76     // 是否显示网格  
     77     scaleShowGridLines : false,  
     78       
     79     // 网格颜色  
     80     scaleGridLineColor : "rgba(0,0,0,.05)",  
     81       
     82     // 网格宽度  
     83     scaleGridLineWidth : 2,   
     84       
     85     // 是否使用贝塞尔曲线? 即:线条是否弯曲  
     86     bezierCurve : false,  
     87       
     88     // 是否显示点数  
     89     pointDot : true,  
     90       
     91     // 圆点的大小  
     92     pointDotRadius : 8,  
     93       
     94     // 圆点的笔触宽度, 即:圆点外层白色大小  
     95     pointDotStrokeWidth : 2,  
     96       
     97     // 数据集行程  
     98     datasetStroke : true,  
     99       
    100     // 线条的宽度, 即:数据集  
    101     datasetStrokeWidth : 2,  
    102       
    103     // 是否填充数据集  
    104     datasetFill : false,  
    105       
    106     // 是否执行动画  
    107     animation : true,  
    108   
    109     // 动画的时间  
    110     animationSteps : 60,  
    111       
    112     // 动画的特效  
    113     animationEasing : "easeOutQuart"   
    114 }  
    115 var myLine = new Chart(document.getElementById("myChart").getContext("2d")).Radar(radarChartData, options);
    116 </script>
    117 </body>
    118 </html>

    2.x

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4 <meta charset="utf-8">
     5     <title>chart.js 2.x</title>   
     6 </head>
     7 <body>
     8 <!-- 展示canvas -->
     9 <div style="500px;height:500px;" id="radar">
    10     <canvas id="myChart"></canvas>
    11 </div>
    12 <!--引入 chartjs-->
    13 <script src="Chart.js-2.4.0/dist/Chart.bundle.min.js"></script>
    14 
    15 
    16 <script type="text/javascript">
    17     // 设置数据和参数
    18     var radarChartData = { 
    19         labels: ["星期一", "星期二", "星期三", "星期四", "星期五","星期六","星期日"], 
    20         datasets: [ 
    21             { 
    22                 pointBorderColor:"#C064A7",//描点颜色
    23                 pointBackgroundColor:"#fff",//描点背景颜色
    24                 borderColor:"#C064A7",//画线颜色
    25                 data: [15,25,35,45,55,65,75]
    26             }
    27         ]
    28         
    29     };
    30     //设置选项
    31     var options = {
    32         legend:false,//数据项
    33         scale: {
    34             ticks: {
    35                 beginAtZero: true,
    36                 stepSize:20,//Y轴间隔
    37                 max:100,//Y轴最大值
    38                 min:0,
    39                 callback:function(value) { return value + '%'; }//Y轴格式化
    40             },
    41             angleLines:{
    42                 display:false//雷达辐射轴                
    43             },
    44             pointLabels:{
    45                 fontSize:13//x轴文字
    46             },
    47             
    48         },
    49         animation:{
    50             onComplete:function(){
    51                 document.getElementById("radar").innerHTML = "<img src='" + myBarChart.toBase64Image() + "' />";
    52             }
    53         }
    54     }
    55     var ctx = document.getElementById("myChart").getContext("2d");
    56     var myBarChart = new Chart(ctx, {type: 'radar',data: radarChartData,options:options});
    57 </script>
    58 </body>
    59 </html>
  • 相关阅读:
    OpenCV学习(10) 图像的腐蚀与膨胀(1)
    OpenCV学习(6) 文件和Mat之间的数据交换
    OpenCV学习(5) Mat的基本操作(2)
    OpenCV学习(4) Mat的基本操作(1)
    OpenCV学习(3) OpenCV框架
    OpenCV学习(2) OpenCV的配置
    OpenCV学习(1) OpenCV的安装
    Android触控屏幕Gesture(GestureDetector和SimpleOnGestureListener的使用教程) 分类:Androidandroid实例
    转载 C++实现的委托机制
    C++如何禁止掉对象的复制操作
  • 原文地址:https://www.cnblogs.com/nightfallsad/p/6480201.html
Copyright © 2011-2022 走看看