如何在Highcharts中使HTML表中的每一行成为饼状图

How do I make each row in a HTML table a pie chart in Highcharts?

本文关键字:一行 Highcharts 中使 HTML      更新时间:2023-09-26

例如,我的表是这样的:

            agree neutral disagree
    q1      10     4       4
    q2      16     1       1
    q3      18     0       0
    q4      15     2       1
    q5      13     5       0

和我想把第一季度做成一个饼状图,同意、中性和不同意作为不同的部门,第二季度、第三季度也是如此。

    <script type="text/javascript">
         $(function () {
           var chart;
        $('#container').highcharts({
            data: {
                table: document.getElementById('datatable')
            },
            chart: {
                type: 'column'
            },
            title: {
                text: ''
            },
            yAxis: {
                allowDecimals: false,
                title: {
                    text: 'Persons'
                }
            },
            tooltip: {
                formatter: function() {
                    return '<b>'+ this.series.name +'</b><br/>'+
                        this.point.y +' individuals said '+ this.point.name.toLowerCase();
                }
            },
        });
    });
    /**********************************************
    **********************************************/

         $(function () {
           var chart;
        $('#container2').highcharts({
            data: {
                table: document.getElementById('datatable')
            },
            chart: {
                type: 'pie'
            },
            title: {
                text: ''
            },
            yAxis: {
                allowDecimals: false,
                title: {
                    text: 'Persons'
                }
            },
            tooltip: {
                formatter: function() {
                    return '<b>'+ this.series.name +'</b><br/>'+
                        this.point.y +' individuals said '+ this.point.name.toLowerCase();
                }
            },
        });
    });

    /**********************************************/
    /**********************************************/
    $(function () {
        var chart;
        $(document).ready(function() {
            chart = new Highcharts.Chart({
                chart: {
                    renderTo: 'container3',
                    plotBackgroundColor: null,
                    plotBorderWidth: null,
                    plotShadow: false,
                    margin: [0, 0, 0, 0],
                    spacingTop: 0,
                    spacingBottom: 0,
                    spacingLeft: 0,
                    spacingRight: 0             
                },
                title: {
                    text: ''
                },
                tooltip: {
                    formatter: function() {
                        return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %';
                    }
                },
                legend: {
                    enabled:true
                },
                plotOptions: {
                    pie: {
                        allowPointSelect: true,
                        cursor: 'pointer',
                        size: '50%',
                        dataLabels: {
                            enabled: false
                        }
                    }
                },
                series: 
                [
                    {
                    type: 'pie',
                    name: 'testname1',
                    center: [70, 140],//+130 to the x-axis
                    showInLegend:true,
                    data: [
                        ['Commerce',   33.0],
                        ['Engineering',       32.3],
                        {
                            name: 'Financial Services',
                            y: 18.8,
                            sliced: true,
                            selected: true
                        },
                        ['Logistics, Aviation & Shipping',    5.5],
                        ['Seafood & Marine',     9.2],
                        ['Corporate Services & others',   1.2]
                    ]
                    }
                    ,{
                    type: 'pie',
                    name: 'testname2',
                    center: [200, 140],
                    showInLegend:false,
                    data: [
                        ['Commerce',   33.0],
                        ['Engineering',       32.3],
                        {
                            name: 'Financial Services',
                            y: 18.8,
                            sliced: true,
                            selected: true
                        },
                        ['Logistics, Aviation & Shipping',    5.5],
                        ['Seafood & Marine',     9.2],
                        ['Corporate Services & others',   1.2]
                    ]
                    },
                    {
                    type: 'pie',
                    name: 'testname3',
                    center: [330, 140],
                    showInLegend:false,
                    data: [
                        ['Commerce',   33.0],
                        ['Engineering',       32.3],
                        {
                            name: 'Financial Services',
                            y: 18.8,
                            sliced: true,
                            selected: true
                        },
                        ['Logistics, Aviation & Shipping',    5.5],
                        ['Seafood & Marine',     9.2],
                        ['Corporate Services & others',   1.2]
                    ]
                    },
                    {
                    type: 'pie',
                    name: 'testname4',
                    center: [460, 140],
                    showInLegend:false,
                    data: [
                        ['Commerce',   33.0],
                        ['Engineering',       32.3],
                        {
                            name: 'Financial Services',
                            y: 18.8,
                            sliced: true,
                            selected: true
                        },
                        ['Logistics, Aviation & Shipping',    5.5],
                        ['Seafood & Marine',     9.2],
                        ['Corporate Services & others',   1.2]
                    ]
                    },
                    {
                    type: 'pie',
                    name: 'testname5',
                    center: [590, 140],
                    showInLegend:false,
                    data: [
                        ['Commerce',   33.0],
                        ['Engineering',       32.3],
                        {
                            name: 'Financial Services',
                            y: 18.8,
                            sliced: true,
                            selected: true
                        },
                        ['Logistics, Aviation & Shipping',    5.5],
                        ['Seafood & Marine',     9.2],
                        ['Corporate Services & others',   1.2]
                    ]
                    },
                    {
                    type: 'pie',
                    name: 'testname6',
                    center: [720, 140],
                    showInLegend:false,
                    data: [
                        ['Commerce',   33.0],
                        ['Engineering',       32.3],
                        {
                            name: 'Financial Services',
                            y: 18.8,
                            sliced: true,
                            selected: true
                        },
                        ['Logistics, Aviation & Shipping',    5.5],
                        ['Seafood & Marine',     9.2],
                        ['Corporate Services & others',   1.2]
                    ]
                    },
                    {
                    type: 'pie',
                    name: 'testname7',
                    center: [850, 140],
                    showInLegend:false,
                    data: [
                        ['Commerce',   33.0],
                        ['Engineering',       32.3],
                        {
                            name: 'Financial Services',
                            y: 18.8,
                            sliced: true,
                            selected: true
                        },
                        ['Logistics, Aviation & Shipping',    5.5],
                        ['Seafood & Marine',     9.2],
                        ['Corporate Services & others',   1.2]
                    ]
                    },
                    {
                    type: 'pie',
                    name: 'testname8',
                    center: [980, 140],
                    showInLegend:false,
                    data: [
                        ['Commerce',   33.0],
                        ['Engineering',       32.3],
                        {
                            name: 'Financial Services',
                            y: 18.8,
                            sliced: true,
                            selected: true
                        },
                        ['Logistics, Aviation & Shipping',    5.5],
                        ['Seafood & Marine',     9.2],
                        ['Corporate Services & others',   1.2]
                    ]
                    }
                ]
            },function(chart) {
            $(chart.series[0].data).each(function(i, e) {
                e.legendItem.on('click', function(event) {
                    var legendItem=e.name;
                    event.stopPropagation();
                    $(chart.series).each(function(j,f){
                           $(this.data).each(function(k,z){
                               if(z.name==legendItem)
                               {
                                   if(z.visible)
                                   {
                                       z.setVisible(false);
                                   }
                                   else
                                   {
                                       z.setVisible(true);
                                   }
                               }
                           });
                    });
                });
            });
        });
        });
    });

    </script>

注意:第一个图表成功地从我正在使用的表中提取数据。

另外两个是我试图回答我的问题。

下面是我发布的代码的结果:

http://tinypic.com/r/11uyj3s/8

示例:http://jsfiddle.net/4Kn5t/

您需要为每个图表设置三个额外的选项,以告诉哪些行应该用于饼状图:

$('#container2').highcharts({
    data: {
        table: document.getElementById('datatable'),
        switchRowsAndColumns: true, // use rows as points
        startRow: 1, 
        endRow: 2 // use row == 2
    },
    chart: {
        type: 'pie'
    },
    title: {
        text: 'Data extracted from a HTML table in the page'
    },
    yAxis: {
        allowDecimals: false,
        title: {
            text: 'Units'
        }
    },
    tooltip: {
        formatter: function() {
            return '<b>'+ this.series.name +'</b><br/>'+
                this.point.y +' '+ this.point.name.toLowerCase();
        }
    }
});