# 圆环图和饼图

饼图和圆环图可能是最常用的图表。它们被分成多个扇区,每个扇区的弧长显示了每个数据片段的比例值。

它们非常适合显示数据之间的关系比例。

饼图和圆环图在 Chart.js 中实际上是同一个类,但有一个不同的默认值 - 它们的 cutout。这相当于内部应切出的部分。对于饼图,默认值为 0,对于圆环图,默认值为 '50%'

它们还在 Chart 核心中的两个别名下注册。除了不同的默认值和不同的别名之外,它们完全相同。

    # 数据集属性

    命名空间

    • data.datasets[index] - 仅此数据集的选项
    • options.datasets.doughnut - 所有圆环图数据集的选项
    • options.datasets.pie - 所有饼图数据集的选项
    • options.elements.arc - 所有 弧形元素 的选项
    • options - 整个图表的选项

    圆环图/饼图允许为每个数据集指定许多属性。这些用于设置特定数据集的显示属性。例如,数据集弧的颜色通常以这种方式设置。

    名称 类型 可编写脚本的 可索引的 默认值
    backgroundColor 颜色 'rgba(0, 0, 0, 0.1)'
    borderAlign 'center'|'inner' 'center'
    borderColor 颜色 '#fff'
    borderDash number[] - []
    borderDashOffset number - 0.0
    borderJoinStyle 'round'|'bevel'|'miter' undefined
    borderRadius number|object 0
    borderWidth number 2
    circumference number - - undefined
    clip number|object|false - - undefined
    data number[] - - 必需的
    hoverBackgroundColor 颜色 undefined
    hoverBorderColor 颜色 undefined
    hoverBorderDash number[] - undefined
    hoverBorderDashOffset number - undefined
    hoverBorderJoinStyle 'round'|'bevel'|'miter' undefined
    hoverBorderWidth number undefined
    hoverOffset number 0
    offset number|number[] 0
    rotation number - - undefined
    spacing number - - 0
    weight number - - 1

    所有这些值,如果 undefined,将回退到 选项解析 中描述的范围

    # 通用

    名称 描述
    circumference 每个数据集的覆盖,用于弧形覆盖的扫描范围
    clip 如何相对于 chartArea 进行裁剪。正值允许溢出,负值在 chartArea 内部裁剪那么多像素。0 = 在 chartArea 处裁剪。裁剪也可以针对每边配置:clip: {left: 5, top: false, right: -2, bottom: 0}
    rotation 每个数据集的覆盖,用于绘制弧形的起始角度

    # 样式

    每个弧的样式可以使用以下属性进行控制

    名称 描述
    backgroundColor 弧背景颜色。
    borderColor 弧边框颜色。
    borderDash 弧边框的长度和虚线的间距。参见 MDN (在新窗口打开)
    borderDashOffset 弧边框的虚线的偏移量。参见 MDN (在新窗口打开)
    borderJoinStyle 弧边框的连接样式。参见 MDN (在新窗口打开)
    borderWidth 弧边框宽度(以像素为单位)。
    offset 弧偏移量(以像素为单位)。
    spacing 固定弧偏移量(以像素为单位)。类似于 offset,但适用于所有弧形。
    weight 数据集的相对厚度。为 weight 提供一个值将导致饼图或圆环图数据集以相对于所有数据集 weight 值之和的厚度绘制。

    所有这些值,如果 undefined,将回退到关联的 elements.arc.* 选项。

    # 边框对齐

    以下值支持 borderAlign

    • 'center'(默认)
    • 'inner'

    当设置 'center' 时,相邻弧形的边框将重叠。当设置 'inner' 时,保证所有边框都不会重叠。

    # 边框圆角

    如果此值是一个数字,它将应用于弧形的所有角(outerStart、outerEnd、innerStart、innerRight)。如果此值是一个对象,outerStart 属性定义外起点角的边框圆角。类似地,也可以指定 outerEndinnerStartinnerEnd 属性。

    # 交互

    可以使用以下属性控制与每个弧的交互

    名称 描述
    hoverBackgroundColor 悬停时弧的背景颜色。
    hoverBorderColor 悬停时弧的边框颜色。
    hoverBorderDash 悬停时弧边框的长度和虚线的间距。参见 MDN (在新窗口打开)
    hoverBorderDashOffset 悬停时弧边框的虚线的偏移量。参见 MDN (在新窗口打开)
    hoverBorderJoinStyle 悬停时弧边框的连接样式。参见 MDN (在新窗口打开)
    hoverBorderWidth 悬停时弧边框宽度(以像素为单位)。
    hoverOffset 悬停时弧偏移量(以像素为单位)。

    所有这些值,如果 undefined,将回退到关联的 elements.arc.* 选项。

    # 配置选项

    这些是特定于饼图和圆环图的自定义选项。这些选项在访问时会被查找,并与全局图表配置一起形成图表的选项。

    名称 类型 默认值 描述
    cutout number|string 50% - 对于圆环图,0 - 对于饼图 图表中间切出的部分。如果 string 并以 '%' 结尾,则为图表半径的百分比。number 被认为是像素。
    radius number|string 100% 图表的外部半径。如果 string 并以 '%' 结尾,则为最大半径的百分比。number 被认为是像素。
    rotation number 0 绘制弧形的起始角度。
    circumference number 360 允许弧形覆盖的扫描范围。
    animation.animateRotate boolean true 如果为真,图表将以旋转动画的方式进行动画。此属性位于 options.animation 对象中。
    animation.animateScale boolean false 如果为真,将对从中心向外缩放图表进行动画。

    # 默认选项

    我们还可以更改为每个创建的 Doughnut 类型设置的这些默认值,该对象在 Chart.overrides.doughnut 中可用。饼图也有一份这些默认值的克隆,可在 Chart.overrides.pie 中更改,唯一的区别是 cutout 设置为 0。

    # 数据结构

    对于饼图,数据集需要包含一个数据点数组。数据点应为数字,Chart.js 将对所有数字求和并计算每个数字的相对比例。

    您还需要指定一个标签数组,以便工具提示正确显示。

    data = {
        datasets: [{
            data: [10, 20, 30]
        }],
        // These labels appear in the legend and in the tooltips when hovering different arcs
        labels: [
            'Red',
            'Yellow',
            'Blue'
        ]
    };
    
    最后更新时间: 2024 年 5 月 17 日 下午 12:33:38