zoukankan      html  css  js  c++  java
  • Google Chart 之 Area Chart案例

    数据可视化是近来比较火热的一个话题,那么在绝大部分情况下,常见的比如折线图,柱状图等都可以通过直接调用第三方的API来实现,比如Google Chart,Google Chart 提供了完整的文档供开发者使用,同时提供的还有在线编辑器:JSFiddle,下面分享一个对Area Chart(面积图)的实例:

     源代码如下:

    <html>
      <head>
        <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
        <script type="text/javascript">
          google.charts.load('current', {'packages':['corechart']});
          google.charts.setOnLoadCallback(drawChart);
    
          function drawChart() {
            var data = google.visualization.arrayToDataTable([
              ['Year', 'Sales', 'Expenses'],
              ['2013',  1000,      400],
              ['2014',  1170,      460],
              ['2015',  660,       1120],
              ['2016',  1030,      540]
            ]);
    
            var options = {
              title: 'Company Performance',
              hAxis: {title: 'Year',  titleTextStyle: {color: '#333'}},
              vAxis: {minValue: 0}
            };
    
            var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
            chart.draw(data, options);
          }
        </script>
        <title>一个简单的demo</title>
      </head>
      <body>
        <div id="chart_div" style=" 100%; height: 500px;"></div>
      </body>
    </html>

    可以看到,首先需要一个div元素作为渲染的核心,然后引入Google的JS库,最后使用draw方法渲染图表,其中主要注意对数据和样式的渲染

    作为调用第三方库的我,最关心的无疑是如何修改页面元素显示效果,比如渲染的颜色,背景色填充,X,Y坐标轴如何修改样式等,所以研究了下官方文档后,我大致总结了一些常见的渲染效果,演示结果如下:

     源代码如下:

    <html>
      <head>
        <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
        <script type="text/javascript">
          google.charts.load('current', {'packages':['corechart']});
          google.charts.setOnLoadCallback(drawChart);
    
          function drawChart() {
            var data = new google.visualization.DataTable();
            data.addColumn('string', 'Month'); 
            data.addColumn('number', 'Sales'); 
            data.addColumn({type:'number', role:'interval'});  
            data.addColumn({type:'number', role:'interval'});  
            data.addColumn({type:'string', role:'annotation'});
            data.addColumn({type:'string', role:'annotationText'});
            data.addColumn({type:'boolean',role:'certainty'}); 
    
            //  true / false 表示实线,虚线
            data.addRows([
                ['2015',1000,  null, null,  '$1000','', true],
                ['2016',  1170, null, null,  '$1170','', true],
                ['2017',  666,  null,  null,  '$666','', true],
                ['2018', 1030, null, null, '$1030', '', true],
                ['2019', 7777, null, null, '$7777', '', true],
                ['2020', 10000, null, null, '$10000', '', false]
            ]);
            var options = {
              title: '年度销售额(2015-2020)',
              // Y 轴
              hAxis: {
                  title: 'Y轴标题', 
                  titleTextStyle: {color: '#00ff00'},// Y轴标题颜色
                  gridlines:{
                      color: 'transparent', 
                      minSpacing: 20,
                  },
              },
              // X 轴
              vAxis: {
                  title: 'X轴标题', 
                  titleTextStyle: {color: '#00ff00'},// X轴标题颜色
                  textStyle: {
                    color: '#ff0000'
                  },
              },
              height: 300, // 图表的高度
               700, // 图标的宽度
              legend: { position: 'top'}, // 图例展示的位置
              colors: ['#62325a'] // 渲染面积里的颜色
            };
    
            var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
            chart.draw(data, options);
          }
        </script>
        <title>test Area chart</title>
      </head>
      <body>
          <div id="chart_div" style=" 100%; height: 500px;"></div>
      </body>
    </html>

    最后在玩了下这个图后,发现这个图背景里出现的网格线比较的扎眼,于是想要隐藏一些现有的内容,比如网格线,比如X轴上的信息等等,那么演示效果如下:

     源代码如下:

    <html>
      <head>
        <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
        <script type="text/javascript">
          google.charts.load('current', {'packages':['corechart']});
          google.charts.setOnLoadCallback(drawChart);
    
          function drawChart() {
            var data = new google.visualization.DataTable();
            data.addColumn('string', 'Month'); 
            data.addColumn('number', 'Sales'); 
            data.addColumn({type:'number', role:'interval'});  
            data.addColumn({type:'number', role:'interval'});  
            data.addColumn({type:'string', role:'annotation'});
            data.addColumn({type:'string', role:'annotationText'});
            data.addColumn({type:'boolean',role:'certainty'}); 
    
            //  true / false 表示实线,虚线
            data.addRows([
                ['2015',1000,  null, null,  '$1000','', true],
                ['2016',  1170, null, null,  '$1170','', true],
                ['2017',  666,  null,  null,  '$666','', true],
                ['2018', 1030, null, null, '$1030', '', true],
                ['2019', 7777, null, null, '$7777', '', true],
                ['2020', 10000, null, null, '$10000', '', false]
            ]);
            var options = {
              title: '年度销售额(2015-2020)',
              // Y 轴
              hAxis: {
                  // title: 'Y轴标题', 
                  title: '', // 隐藏 Y 轴标题
                  titleTextStyle: {color: '#00ff00'},// Y轴标题颜色
                  gridlines:{
                      color: 'transparent', 
                      minSpacing: 20,
                  },
              },
              // X 轴
              vAxis: {
                  // title: 'X轴标题', 
                  title: '', // 隐藏 X 轴标题
                  titleTextStyle: {color: '#00ff00'},// X轴标题颜色
                  textStyle: {
                    color: '#ff0000'
                  },
                  gridlines:{
                    color: 'transparent',  // 隐藏网格线
                    // color:'#0000ff', - 网格线 颜色
                    // minSpacing: 20, - 网格线之间的间距
                  },
                  textPosition: 'none' // 隐藏X轴
              },
              height: 300, // 图表的高度
               700, // 图标的宽度
              // legend: { position: 'top'}, // 图例展示的位置
              legend: { position: 'none'}, // 隐藏图例
              colors: ['#62325a'] // 渲染面积里的颜色
            };
    
            var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
            chart.draw(data, options);
          }
        </script>
        <title>test Area chart</title>
      </head>
      <body>
          <div id="chart_div" style=" 100%; height: 500px;"></div>
      </body>
    </html>

     补充:因为Salesforce安全性审查的原因,Google Chart是没办法应用到Salesforce Lightning组件中的,不得不说,这是很大的遗憾,不过可以在组件中调用Chart.JS,具体的可以查看我的博客“Salesforce Lightning组件中使用Chart.JS实现数据可视化

    以上,数据可视化在未来可能是个很有意思的方向,相对传统的Excel表格,以图表的形式更能表现数据的发展趋势,简单调用API,如有错漏之处还请指正

  • 相关阅读:
    js 高阶函数之柯里化
    JavaScript 相关的工具代码
    JS 数组、对象的深拷贝
    页面性能优化
    axios(封装使用、拦截特定请求、判断所有请求加载完毕)
    java 实现登录验证码 (kaptcha 验证码组件)
    告别 hash 路由,迎接 history 路由
    解决 Vue 动态生成 el-checkbox 点击无法赋值问题
    分享基于 websocket 网页端聊天室
    vue + element 动态渲染、移除表单并添加验证
  • 原文地址:https://www.cnblogs.com/luqinghua/p/12650578.html
Copyright © 2011-2022 走看看