highcharts 图表库的简单使用

  Highcharts简介: Highcharts是一款纯javascript编写的图表库,能够很简单便捷的在Web网站或Web应用中添加交互性的图表,Highcharts目前支持直线图、曲线图、面积图、柱状图、饼图、散点图等多达18种不同类型的图表,可以满足你对Web图表的任何需求 !

兼容性

Highcharts支持目前所有的现代浏览器,包括IE6 +、iPhone/iPad、Android。Highcharts在标准(W3C标准)浏览器中使用SVG技术渲染图形,在遗留的IE浏览器中使用VML技术来绘图。

 

Highcharts是开源的,更多信息可以到官方网阅读:

http://www.highcharts.com/  (英文)

http://www.hcharts.cn/index.php  (中文官方网);

 

类似的图表库:ECharts 这个是百度团队开源的,也是纯javascript 编写的,功能也很丰富。

 

首先看个官方简单的demo:

本例固定链接:http://www.hcharts.cn/demo/index.php?p=10

Html 代码:

 <div id="report1" style="min-width: 800px; height: 400px">
  </div>

JavaScript 部分代码:

$(function () {
    $('#container').highcharts({
        title: {
            text: 'Monthly Average Temperature',
            x: -20 //center
        },
        subtitle: {
            text: 'Source: WorldClimate.com',
            x: -20
        },
        xAxis: {
            categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun','Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        },
        yAxis: {
            title: {
                text: 'Temperature (°C)'
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: '#808080'
            }]
        },
        tooltip: {
            valueSuffix: '°C'
        },
        legend: {
            layout: 'vertical',
            align: 'right',
            verticalAlign: 'middle',
            borderWidth: 0
        },
        series: [{
            name: 'Tokyo',
            data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
        }, {
            name: 'New York',
            data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
        }, {
            name: 'Berlin',
            data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
        }, {
            name: 'London',
            data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
        }]
    });
});

需要引入 jquery.js 和highcharts.js 文件

效果图大家可以到上面那个链接地址去看看,这里就不贴出来了。

 

接着分析highcharts使用方法

var chart = new Highcharts.Chart(options);  //options参数必须指定展示对象ID :   chart: {renderTo:'container'}

$("#div").highcharts(options..)

首先设置图表展示区域的div对象,初始化时调用 highcharts方法,options参数是个可变的数组;

options主要参数列表:

英文名中文名描述
lang语言文字对象所有Highcharts文字相关的设置
chart图表图表区、图形区和通用图表配置选项
colors颜色图表数据列颜色配置,是一个颜色数组
credits版权信息Highcharts在图表的右下方放置的版权信息及链
drilldown向下钻取向下钻取数据,深入到其中的具体数据
exporting导出模块导出功能配置,导出即将图表下载为图片或打印图表
labels标签可以放置到图表区域内任何位置的HTML标签
legend图例用不同形状、颜色、文字等 标示不同数据列,通过点击标示可以显示或隐藏该数据列
loading加载中加载选项控制覆盖绘图区的加载屏的外观和文字
navigation导航导出模块按钮和菜单配置选项组
noData没有数据没有数据时显示的内容
pane分块针对仪表图和雷达图专用的配置,主要设置弧度及背景色
plotOptions数据点配置针对不同类型图表的配置。Highcharts所有图表类型请看下表
series数据列图表上一个或多个数据系列,比如图表中的一条曲线,一个柱形
title标题包括即标题和副标题,其中副标题为非必须的
tooltip数据点提示框当鼠标滑过某点时,以框的形式提示改点的数据,比如该点的值,数据单位等
Axis坐标轴包括x轴和y轴。多个不同的数据列可共用同一个X轴或Y轴,当然,还可以有两个X轴或Y轴,分别显示在图表的上下或左右。

 

 上面的demo数据列series是静态的,一般在项目中实际使用时,数据是动态获取的,下面演示下动态设置highcharts数据列series

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>

    <script src="../../Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>

    <script src="../../Scripts/Highcharts-4.0.3/highcharts.js" type="text/javascript"></script>

</head>
<body>
    <form id="form1" runat="server">
    <div>
        <div id="report1" style="min-width: 800px; height: 400px">
        </div>
    </div>
    </form>
</body>
</html>

<script>

    $(function() {
        var mychartOptions = {
            chart: {
                type: 'line'          //指定图表的类型,默认是折线图(line)
            },
            title: {
                text: '年度发贴报表统计'      //指定图表标题
            },
            subtitle: {
                text: '2014年'           
            },
            xAxis: {
                //指定x轴分组
                categories: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
            },
            yAxis: {
                min: 0,
                title: {
                    text: '发帖数量'      //指定y轴的标题
                }
            },
            plotOptions: {
                line: {
                    dataLabels: {
                        enabled: true
                    },
                    enableMouseTracking: true
                }
            }
    };
// $("#report1").highcharts(mychartOptions); //动态加载报表数据 $.ajax({ type: 'post', url: 'Report.ashx?type=1', dataType: 'json', async: 'true', //异步 cache: 'false', success: function(data) {               //data=[{"name":"测试系统","data":[0,0,0,0,0,0,0,12,14,4,0,0]},{"name":"3G网络论坛","data":[0,0,0,0,0,0,0,0,0,8,0,0]},                    {"name":"移动内部","data":[0,0,0,0,0,0,0,0,0,2,0,0]}]               //动态邦定 mychartOptions.series = data;               //初始化highcharts var chart = $("#report1").highcharts(mychartOptions); }, error: function(XMLHttpRequest, textStatus, errorThrown) { $("#report1").html("<span>获取数据失败" + textStatus + "</span>"); } }); }); </script>

 

还有另一种数据邦定方式:把Html里的table设置为其数据源,table格式有要求的,例如

需要引用 jquery.js ,highcharts.js,Highcharts-4.0.3/modules/data.js

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>

    <script src="../../Scripts/jquery-1.7.2.min.js" type="text/javascript"></script>

    <script src="../../Scripts/Highcharts-4.0.3/highcharts.js" type="text/javascript"></script>

    <script src="../../Scripts/Highcharts-4.0.3/modules/data.js" type="text/javascript"></script>
<style>
    
body { 
font: normal 11px auto "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; 
color: #4f6b72; 
background: #E6EAE9; 
} 

a { 
color: #c75f3e; 
} 

table  
{
    
width: 700px; 
padding: 0; 
 margin-right:auto;
 margin-left:auto; 
} 

caption { 
padding: 0 0 5px 0; 
width: 700px; 
font: italic 11px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; 
text-align: right; 
} 

th { 
font: bold 11px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; 
color: #4f6b72; 
border-right: 1px solid #C1DAD7; 
border-bottom: 1px solid #C1DAD7; 
border-top: 1px solid #C1DAD7; 
letter-spacing: 2px; 
text-transform: uppercase; 
text-align: left; 
padding: 6px 6px 6px 12px; 
background: #CAE8EA no-repeat; 
} 

th.nobg { 
border-top: 0; 
border-left: 0; 
border-right: 1px solid #C1DAD7; 
background: none; 
} 

td { 
border-right: 1px solid #C1DAD7; 
border-bottom: 1px solid #C1DAD7; 
background: #fff; 
font-size:11px; 
padding: 6px 6px 6px 12px; 
color: #4f6b72; 
} 


td.alt { 
background: #F5FAFA; 
color: #797268; 
} 

th.spec { 
border-left: 1px solid #C1DAD7; 
border-top: 0; 
background: #fff no-repeat; 
font: bold 10px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; 
} 

th.specalt { 
border-left: 1px solid #C1DAD7; 
border-top: 0; 
background: #f5fafa no-repeat; 
font: bold 10px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; 
color: #797268; 


} 
</style>
</head>
<body>
    <form id="form1" runat="server">
    <span style="font-size:20px; margin-top:10px">柱状图</span>
    <hr />
    <div id="container" style="min-width: 700px; height: 400px">
    </div>
    
    <%--<HR style="FILTER: progid:DXImageTransform.Microsoft.Glow(color=#987cb9,strength=10)"  color=#fff SIZE=1>--%>
    <div style="margin-top:20px; font-size:20px">统计列表</div>
    <hr />
    <div id="divTable" style="position:absolute;" ></div>
   
    </form>
</body>
</html>

<script>

    $(document).ready(function() {

        $.ajax({
            type: "POST",
            dataType: "html",
            url: 'Report.ashx?type=2',
            async: false, //设为false就是同步请求
            cache: false,
            success: function(data) {
                if (data != null) {//得到返回的html,并赋值
                    $("#divTable").html(data);
                }
            }
        });
        $('#container').highcharts({
            data: {
                table: document.getElementById('reportTable')  //reportTable是table的ID
            },
            chart: {
                type: 'column'
            },
            title: {
                text: '系统论坛发帖报表'
            },
            yAxis: {
                allowDecimals: false,
                title: {
                    text: '发帖数量'
                }
            },
            tooltip: {
                formatter: function() {
                    return '<b>' + this.series.name + '</b><br/>' +
                    this.y 
                }
            }
        });
    });

</script>
View Code

效果图:

 

以上是个人使用Highcharts 的个人总结,还有许多强大功能没用到,有时间再慢慢研究。

转载于:https://www.cnblogs.com/jingping/p/4031705.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值