(五)、利用HighCharts 显示饼图

利用HightCharts显示饼图,主要有以下几个主要注意点:


1、百分比格式,精确到小数点几位:

Highcharts.numberFormat(this.percentage, 2) //2表示精确到小数点后2位


2、series的data格式 [名称,值]的JSON格式序列

[

  [IE浏览器,200],

  [Firefox浏览器,300],

  [傲游,40],

  [Safari,50]

]


3、点击饼图事件,弹出提示及页面跳转

$(function () {
    var chart = new Highcharts.Chart({
        chart: {
            renderTo: 'container'
        },
        xAxis: {
            categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        },
        
        plotOptions: {
            series: {
                cursor: 'pointer',
                events: {
                    click: function(event) {
                        alert(this.name +' clicked\n'+
                              'Alt: '+ event.altKey +'\n'+
                              'Control: '+ event.ctrlKey +'\n'+
                              'Shift: '+ event.shiftKey +'\n');

                        location.href='http://www.baidu.com';  //页面跳转
                    }
                }

            }
        },
        
        series: [{
            data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4],

            events: {
                        click: function (e) {

                         alert(e.point.name); //弹出提示

                         location.href='http://www.baidu.com';  //页面跳转

                   }

              }
        }]
    });
});


                <div style="width: 97%; height: 400; margin: 5px" id="tb2" runat="server">
                    <div id="container2" style="width: 95%; height: 400px; margin: 20,5,10,10;">
                    </div>
                </div>
                <div style="display: none;">
                    <input type="text" id="d_nf2" runat="server" />
                    <input type="text" id="d_p1" runat="server" />
                </div>
                <script language="javascript" type="text/javascript">
                    var chart;
                    $(document).ready(function () {
                        var xdata = eval($("#d_nf2").val());
                        var ydata1 = eval($("#d_p1").val());
                        chart = new Highcharts.Chart({
                            chart: {
                                renderTo: 'container2',
                                plotBackgroundColor: null,
                                plotBorderWidth: null,
                                plotShadow: false
                            },
                            title: {
                                text: '地表水资源量饼图'
                            },
                            credits: {
                                enabled: false
                            },
                            exporting: {
                                enabled: false
                            },
                            tooltip: {
                                formatter: function () {
                                    return '<b>' + this.point.name + '</b>: ' + Highcharts.numberFormat(this.percentage, 2) + ' %';
                                }
                            },
                            plotOptions: {
                                pie: {
                                    allowPointSelect: true,
                                    cursor: 'pointer',
                                    showInLegend: true,
                                    dataLabels: {
                                        enabled: true,
                                        color: Highcharts.theme.textColor || '#000000',
                                        connectorColor: Highcharts.theme.textColor || '#000000',
                                        formatter: function () {
                                            return '<b>' + this.point.name + '</b>: ' + Highcharts.numberFormat(this.percentage, 2) + ' %';
                                        }
                                    }
                                }
                            },
                            series: [{
                                type: 'pie',
                                name: '地表水资源量',
                                data: ydata1 //这个序列之,从后台数据库读取并动态拼凑该JSON序列串
                            }]
                        });
                    });
                </script>
            </radTS:PageView>
        </radTS:RadMultiPage>
    </div>
 简单的demo效果图如下:




### Highcharts 多层创建与配置 #### 配置基础设置 为了构建一个多层,首先需要引入必要的Highcharts库文件。通常情况下,在HTML文档头部通过`<script>`标签完成。 ```html <script src="https://code.highcharts.com/highcharts.js"></script> <script src="https://code.highcharts.com/modules/solid-gauge.js"></script> <script src="https://code.highcharts.com/modules/exporting.js"></script> ``` #### 初始化表容器 定义一个DOM元素作为表渲染的目标区域,并赋予其唯一的ID以便后续JavaScript代码调用。 ```html <div id="container" style="min-width: 310px; height: 400px; max-width: 600px; margin: 0 auto"></div> ``` #### 构建数据结构 对于多层而言,每一圈代表的数据集应当被单独声明并加入到series数组内。每个系列对象需指明type属性为'pie',同时提供name和data两个参数用于描述该层次的具体数值分布情况[^2]。 ```javascript var dataLayerOne = [ ['Firefox', 45.0], ['IE', 26.8], { name: 'Chrome', y: 12.8, sliced: true, selected: true }, ['Safari', 8.5], ['Opera', 6.2], ['Others', 0.7] ]; var dataLayerTwo = [ ['A', 55.11], ['B', 21.63], ['C', 11.94], ['D', 10.57], ['E', 0.6], ['F', 0.15] ]; ``` #### 设置样式选项 利用chart, title, tooltip等配置项来自定义外观效果以及交互行为;特别是plotOptions下的pie部分可以调整扇区之间的间距、起始角度等细节特性。 ```javascript Highcharts.chart('container', { chart: { type: 'pie'}, title: { text: 'Browser market shares at a specific website, 2014' }, plotOptions: { pie: { innerSize: '50%', // 控制内部空白圆环的比例 depth: 45 // 给予三维视觉感受 } }, series: [{ name: "Brands", data: dataLayerOne }, { name: "Versions", data: dataLayerTwo, size: '80%', innerSize: '60%', showInLegend: false, dataLabels: { enabled: false } }] }); ``` 上述实例展示了如何基于Highcharts框架实现双层嵌套式的状统计形展示方案。值得注意的是,实际应用过程中可根据需求灵活修改各组件间的逻辑关系及表现形式以满足特定业务场景的要求。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值