highcharts根据柱状图动态生成饼状图

效果图如下:

在代码里引入js:

<script src="../../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script src="../../../Scripts/Chart/highcharts.src.js" type="text/javascript"></script>
<script src="../../../Scripts/Chart/modules/exporting.src.js" type="text/javascript"></script>
<script src="../../../Scripts/Chart/themes/grid.js" type="text/javascript"></script>

柱状图部分:

 var myChart;
        function bindChart(r, caption) {
            if (myChart) myChart.destroy();
            var op = $.extend({}, {
                title: { text: caption },
                chart: { renderTo: 'container', hight: 300, defaultSeriesType: 'column', margin: [50, 50, 100, 80] },
                exporting: { enabled: false },
                credits: { enabled: false }
            }, r);
            myChart = new Highcharts.Chart(op);
        }
        function splineChar(t, yTitle) {
            var r = {
                plotOptions: {
                    column: {
                            allowPointSelect: true,//是否允许柱子选择
                            cursor:"pointer",
                            states: {
                                select: {
                                    color: "green" //选中柱子后的颜色填充为绿色
                                },
                                hover: {
                                    color: "#aaccff;" //鼠标移入柱子时的颜色填充为红色
                                }
                            }
                        },
                    series: {
                        point: {
                            events: {
                                click: function () {
                                DynamicCreatePieChart(this.category);//这里监听柱状图点击更新饼状图
                                }
                            }
                        }
                    }
                }, exporting: { enabled: true },
                legend: {
                    floating: true,
                    x: -10,
                    y: 50,
                    align: 'right',
                    verticalAlign: 'top',
                    layout: 'vertical',
                    borderWidth: 0//backgroundColor: '#fff',
                }, xAxis: {
                    categories: ['行政许可','案件处理','综合监管','公众诉求','注册登记'], //X轴的坐标值
                    labels: {
                        //rotation: -45,
                        align: 'center',
                        style: { font: 'normal 14px 宋体' }
                    }
                },
                yAxis: {
                    min: 0,
                    title: { text: yTitle}  //Y轴坐标标题  labels:纵柱标尺
                },
                series: [{name: '数量',data: [1607,1146,2817,12,396]}]
            };
            bindChart(r, t);
        };

饼状图部分:

var PieChart;
 $(function () {
            $("#CP1_CP1_btnSearch").removeClass("BUTTON").addClass("btn btn-primary"); 
            DynamicCreatePieChart("行政许可");
            //饼状图创建
            $(document).ready(function () { 
                bindPieChart();
            });
            function bindPieChart()
            {
                PieChart = new Highcharts.Chart({
                    chart: {
                        renderTo: 'pieChart',
                        plotBackgroundColor: null,
                        plotBorderWidth: null,
                        plotShadow: false
                    },
                    title: {
                        text: "类别统计"
                    },
                tooltip: {  
                            formatter: function() { //格式化鼠标滑向图表数据点时显示的提示框  
                                var s;  
                                if (this.point.name) { // 饼状图  
                                    s = '<b>' + this.point.name + '</b>: <br>' + this.y+ '(' + this.percentage.toFixed(2) + '%)'; //百分比需要格式化成两位  
                                } else {  
                                    s = '' + this.x + ': ' + this.y + '';  
                                }  
                                return s;  
                            }  
                     },  
                    plotOptions: {
                        pie: {
                          allowPointSelect: true,
                          cursor: 'pointer',
                          size: '170',
                          dataLabels: {
                              enabled: true,
                              color: '#000000',
                              connectorColor: '#000000',
                              format: '<b>{point.name}</b>:{point.percentage}%'
                          }
                      }
                    }, 
                     series: [{
                        type: 'pie',
                        name: 'Browser share',
                        data: [
                    ['Firefox', 45.0],
                    ['IE', 26.8],
                    {
                        name: 'Chrome',
                        y: 12.8,
                        sliced: true,
                        selected: true
                    },
                    ['Safari', 8.5],
                    ['Opera', 6.2],
                    ['Others', 0.7]
                ]
                    }]<----这里写的死数据---->
                });
            }
        });   

动态生成饼状图js:

 ///动态更新饼状图数据
        function DynamicCreatePieChart(name) {   
            $.ajax({
                                type: "GET",
                                url: "../../../AjaxHandler.ashx",
                                data: encodeURI("method=QurryTypeInfo&&ssgnq="+ $("#CP1_CP1_txt_Ssgnq").val()+"&&type=" + name),
                                beforeSend: function () {
                                    $("#vLoading").show();
                                },
                                complete: function () {
                                    $("#vLoading").hide();
                                },
                                cache: false,
                                success: function (data) {
                                    if (data!="") { 
                                        var json_data=eval(data);
                                        PieChart.series[0].setData(json_data);
                                    }
                                     else {
                                            alert("暂无数据!");
                                        }
                                },
                                Error:function()
                                {
                                    alert("数据异常");
                                }
                            }); 
        }

完整前端代码:

<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/Controls/RightPageNavBar.Master"
    CodeBehind="ASCSTJ.aspx.cs" Inherits="PDSCJFX.Controls.ZHFXXT.TJFX.ASCSTJ" %>

<asp:Content ID="Content3" ContentPlaceHolderID="CPH" runat="server">
    <link href="../../../ThradPart/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
    <link href="../../../ThradPart/css/bootstrap-responsive.min.css" rel="stylesheet"
        type="text/css" />
    <link href="../../../ThradPart/font-awesome/css/font-awesome.css" rel="stylesheet"
        type="text/css" />
    <script src="../../../Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
    <script src="../../../Scripts/Chart/highcharts.src.js" type="text/javascript"></script>
    <script src="../../../Scripts/Chart/modules/exporting.src.js" type="text/javascript"></script>
    <script src="../../../Scripts/Chart/themes/grid.js" type="text/javascript"></script>
</asp:Content>
<asp:Content ID="Content4" ContentPlaceHolderID="CPBtns" runat="server">
</asp:Content>
<asp:Content ID="Content5" ContentPlaceHolderID="CP1" runat="server">
    <div class="row-fluid">
        <div class="span6">
            <div class="widget-box" style="margin: 0px; padding: 0px;">
                <div class="widget-content">
                    <div id="container" style="padding: 0px; margin: 0px; position: relative;">
                    </div>
                </div>
            </div>
        </div>
        <div class="span6">
            <div class="widget-box" style="margin: 0px; padding: 0px;">
                <div class="widget-content">
                    <div id="pieChart" style="padding: 0px; position: relative;">
                    </div>
                </div>
            </div>
        </div>
        <div class="form-group ">
            所属市场所&nbsp;
            <asp:DropDownList runat="server" ID="txt_Ssgnq">
            </asp:DropDownList>
            <a style="visibility: hidden">无无</a><asp:Button ID="btnSearch" runat="server" Text=" 查询 "
                OnClick="btnSearch_Click" />
        </div>
        <div id="vLoading" class="vLoading" style="display: none; position: absolute; left: 40%;
            top: 35%">
            正在加载数据,请稍候...
        </div>
    </div>
    <script type="text/javascript">
        function showLode() {
            $("#vLoading").show();
        }
        var myChart;
        function bindChart(r, caption) {
            if (myChart) myChart.destroy();
            var op = $.extend({}, {
                title: { text: caption },
                chart: { renderTo: 'container', hight: 300, defaultSeriesType: 'column', margin: [50, 50, 100, 80] },
                exporting: { enabled: false },
                credits: { enabled: false }
            }, r);
            myChart = new Highcharts.Chart(op);
        }
        function splineChar(t, yTitle) {
            var r = {
                plotOptions: {
                    column: {
                            allowPointSelect: true,//是否允许柱子选择
                            cursor:"pointer",
                            states: {
                                select: {
                                    color: "green" //选中柱子后的颜色填充为绿色
                                },
                                hover: {
                                    color: "#aaccff;" //鼠标移入柱子时的颜色填充为红色
                                }
                            }
                        },
                    series: {
                        point: {
                            events: {
                                click: function () {
                                DynamicCreatePieChart(this.category);
                                }
                            }
                        }
                    }
                }, exporting: { enabled: true },
                legend: {
                    floating: true,
                    x: -10,
                    y: 50,
                    align: 'right',
                    verticalAlign: 'top',
                    layout: 'vertical',
                    borderWidth: 0//backgroundColor: '#fff',
                }, xAxis: {
                    categories: <%= xAxisCategories.ToString() %>, //X轴的坐标值
                    labels: {
                        //rotation: -45,
                        align: 'center',
                        style: { font: 'normal 14px 宋体' }
                    }
                },
                yAxis: {
                    min: 0,
                    title: { text: yTitle}  //Y轴坐标标题  labels:纵柱标尺
                },
                series: <%=returnValue.ToString() %>
            };
            bindChart(r, t);
        };
         var PieChart;
 $(function () {
            $("#CP1_CP1_btnSearch").removeClass("BUTTON").addClass("btn btn-primary"); 
            DynamicCreatePieChart("行政许可");
            //饼状图创建
            $(document).ready(function () { 
                bindPieChart();
            });
            function bindPieChart()
            {
                PieChart = new Highcharts.Chart({
                    chart: {
                        renderTo: 'pieChart',
                        plotBackgroundColor: null,
                        plotBorderWidth: null,
                        plotShadow: false
                    },
                    title: {
                        text: "类别统计"
                    },
                tooltip: {  
                            formatter: function() { //格式化鼠标滑向图表数据点时显示的提示框  
                                var s;  
                                if (this.point.name) { // 饼状图  
                                    s = '<b>' + this.point.name + '</b>: <br>' + this.y+ '(' + this.percentage.toFixed(2) + '%)'; //百分比需要格式化成两位  
                                } else {  
                                    s = '' + this.x + ': ' + this.y + '';  
                                }  
                                return s;  
                            }  
                     },  
                    plotOptions: {
                        pie: {
                          allowPointSelect: true,
                          cursor: 'pointer',
                          size: '170',
                          dataLabels: {
                              enabled: true,
                              color: '#000000',
                              connectorColor: '#000000',
                              format: '<b>{point.name}</b>:{point.percentage}%'
                          }
                      }
                    }, 
                     series: [{
                        type: 'pie',
                        name: 'Browser share',
                        data: [
                    ['Firefox', 45.0],
                    ['IE', 26.8],
                    {
                        name: 'Chrome',
                        y: 12.8,
                        sliced: true,
                        selected: true
                    },
                    ['Safari', 8.5],
                    ['Opera', 6.2],
                    ['Others', 0.7]
                ]
                    }]
                });
            }
        });       
        ///动态更新饼状图数据
        function DynamicCreatePieChart(name) {   
            $.ajax({
                                type: "GET",
                                url: "../../../AjaxHandler.ashx",
                                data: encodeURI("method=QurryTypeInfo&&ssgnq="+ $("#CP1_CP1_txt_Ssgnq").val()+"&&type=" + name),
                                beforeSend: function () {
                                    $("#vLoading").show();
                                },
                                complete: function () {
                                    $("#vLoading").hide();
                                },
                                cache: false,
                                success: function (data) {
                                    if (data!="") { 
                                        var json_data=eval(data);
                                        PieChart.series[0].setData(json_data);
                                    }
                                     else {
                                            alert("暂无数据!");
                                        }
                                },
                                Error:function()
                                {
                                    alert("数据异常");
                                }
                            }); 
        }
    </script>
</asp:Content>
View Code

 后端代码:

注册页面每次加载绘画柱状图:Page.ClientScript.RegisterStartupScript(this.GetType(), "s1", "<script>splineChar('" + title + "','" + yTitle + "');</script>");

转载于:https://www.cnblogs.com/ZpchLover/p/4669823.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值