Highcharts 饼图(Pie Chart)配置

饼图是一种圆形图表,通常用于显示各个部分与整体的比例关系。每个扇形表示一个类别,扇形的大小表示该类别所占的比例。饼图适用于展示类别之间的占比对比。

1. 基本饼图配置

以下是一个简单的饼图配置示例,展示不同产品的市场份额:

Highcharts.chart('container', {
    chart: {
        type: 'pie'  // 设置图表类型为饼图
    },
    title: {
        text: '不同产品市场份额'
    },
    subtitle: {
        text: '2025年数据'
    },
    tooltip: {
        pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'  // 显示百分比
    },
    series: [{
        name: '市场份额',
        data: [
            { name: '产品 A', y: 30, color: '#FF5733' },  // 数据格式为 {name: 类别, y: 数值, color: 颜色}
            { name: '产品 B', y: 40, color: '#33B5FF' },
            { name: '产品 C', y: 20, color: '#FFBD33' },
            { name: '产品 D', y: 10, color: '#75FF33' }
        ]
    }]
});

2. 饼图的分裂扇区(Exploded Pie)

饼图中的某个扇区可以被“分裂”出来,突出显示。通过设置 sliced 属性为 true,可以实现这一效果。

Highcharts.chart('container', {
    chart: {
        type: 'pie'  // 设置图表类型为饼图
    },
    title: {
        text: '不同产品市场份额 - 分裂扇区'
    },
    subtitle: {
        text: '2025年数据'
    },
    tooltip: {
        pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
    },
    series: [{
        name: '市场份额',
        data: [
            { name: '产品 A', y: 30, color: '#FF5733' },
            { name: '产品 B', y: 40, color: '#33B5FF', sliced: true },  // 将产品 B 分裂出来
            { name: '产品 C', y: 20, color: '#FFBD33' },
            { name: '产品 D', y: 10, color: '#75FF33' }
        ]
    }]
});

3. 饼图的内外半径(Doughnut Chart)

Highcharts 也支持圆环图(Doughnut Chart),它实际上是饼图的一种变体。通过设置 innerSize 属性来调整饼图的内半径,从而得到圆环形状。

Highcharts.chart('container', {
    chart: {
        type: 'pie'  // 设置图表类型为饼图
    },
    title: {
        text: '产品市场份额 - 圆环图'
    },
    subtitle: {
        text: '2025年数据'
    },
    tooltip: {
        pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
    },
    plotOptions: {
        pie: {
            innerSize: '50%'  // 设置内半径,形成圆环图效果
        }
    },
    series: [{
        name: '市场份额',
        data: [
            { name: '产品 A', y: 30, color: '#FF5733' },
            { name: '产品 B', y: 40, color: '#33B5FF' },
            { name: '产品 C', y: 20, color: '#FFBD33' },
            { name: '产品 D', y: 10, color: '#75FF33' }
        ]
    }]
});

4. 饼图的动画效果

Highcharts 饼图支持在加载时添加动画效果。你可以设置 animation 属性来控制动画的持续时间和效果。

Highcharts.chart('container', {
    chart: {
        type: 'pie',
        animation: {
            duration: 1000,  // 动画时长
            easing: 'easeOutBounce'  // 动画效果
        }
    },
    title: {
        text: '产品市场份额 - 动画效果'
    },
    subtitle: {
        text: '2025年数据'
    },
    tooltip: {
        pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
    },
    series: [{
        name: '市场份额',
        data: [
            { name: '产品 A', y: 30, color: '#FF5733' },
            { name: '产品 B', y: 40, color: '#33B5FF' },
            { name: '产品 C', y: 20, color: '#FFBD33' },
            { name: '产品 D', y: 10, color: '#75FF33' }
        ]
    }]
});

5. 饼图的点击事件

Highcharts 饼图支持点击事件,可以在点击某个扇区时执行指定的操作。例如,你可以通过监听 pointclick 事件来获取点击的扇区数据。

Highcharts.chart('container', {
    chart: {
        type: 'pie'  // 设置图表类型为饼图
    },
    title: {
        text: '产品市场份额 - 点击事件'
    },
    subtitle: {
        text: '2025年数据'
    },
    tooltip: {
        pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
    },
    series: [{
        name: '市场份额',
        data: [
            { name: '产品 A', y: 30, color: '#FF5733' },
            { name: '产品 B', y: 40, color: '#33B5FF' },
            { name: '产品 C', y: 20, color: '#FFBD33' },
            { name: '产品 D', y: 10, color: '#75FF33' }
        ],
        point: {
            events: {
                click: function () {
                    alert('你点击了:' + this.name + ',市场份额:' + this.percentage.toFixed(2) + '%');
                }
            }
        }
    }]
});

6. 饼图的自定义标签

你可以在饼图的扇区上添加自定义标签,通过 dataLabels 配置项来实现。你可以设置标签的显示位置、格式、样式等。

Highcharts.chart('container', {
    chart: {
        type: 'pie'  // 设置图表类型为饼图
    },
    title: {
        text: '自定义标签的饼图'
    },
    subtitle: {
        text: '2025年数据'
    },
    tooltip: {
        pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
    },
    plotOptions: {
        pie: {
            dataLabels: {
                enabled: true,  // 启用数据标签
                format: '{point.name}: {point.percentage:.1f}%',  // 设置数据标签格式
                style: {
                    color: 'black',
                    fontWeight: 'bold'
                },
                distance: 10  // 设置标签与扇区的距离
            }
        }
    },
    series: [{
        name: '市场份额',
        data: [
            { name: '产品 A', y: 30, color: '#FF5733' },
            { name: '产品 B', y: 40, color: '#33B5FF' },
            { name: '产品 C', y: 20, color: '#FFBD33' },
            { name: '产品 D', y: 10, color: '#75FF33' }
        ]
    }]
});

7. 总结

Highcharts 饼图(Pie Chart)是一种非常直观的图表,适用于显示各部分与整体之间的比例关系。通过 Highcharts,你可以:

  • 创建基本饼图,展示各个部分的占比。
  • 使用分裂扇区、圆环图等效果来使饼图更加突出。
  • 为饼图添加动画、点击事件、数据标签等增强交互性和可视性。

如果你有其他具体的需求或想要更多定制功能,随时告诉我!