You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Charts库Pie Chart(饼图)的每个扇区设置指定颜色?

饼图固定扇区颜色实现方案

你当前代码生成随机颜色的核心逻辑是循环调用arc4random_uniform生成随机RGB值,替换这部分逻辑为自定义的固定颜色数组即可实现需求,修改后的代码如下:

func setChart(dataPoints: [String], values: [Double]) {

    var dataEntries: [ChartDataEntry] = []

    for i in 0..<values.count {
        let dataEntry1 = PieChartDataEntry(value: values[i])
        dataEntries.append(dataEntry1)
    }

    let pieChartDataSet = PieChartDataSet(entries: dataEntries, label: "Units Sold")
    let pieChartData = PieChartData(dataSet: pieChartDataSet)
    pieChartData.setValueTextColor(NSUIColor.clear)
    pieChartView.data = pieChartData

    // 替换为你需要的固定颜色,顺序和扇区顺序一一对应
    let colors: [UIColor] = [
        UIColor.red,
        UIColor.blue,
        UIColor.green,
        UIColor.yellow,
        UIColor.purple
        // 可根据你的扇区数量增减颜色项
    ]

    // 若扇区数量动态变化,可补充以下逻辑避免颜色不足:
    // var mutableColors = colors
    // while mutableColors.count < dataPoints.count {
    //     mutableColors.append(UIColor.gray)
    // }
    // pieChartDataSet.colors = mutableColors

    pieChartDataSet.colors = colors

    pieChartView.transparentCircleColor = UIColor.clear
    
}

注意事项

  • 颜色数组的元素顺序和传入的dataPoints/values顺序完全对应,第一个颜色对应第一个扇区,第二个颜色对应第二个扇区,以此类推
  • 也可以直接使用Charts库自带的预设颜色模板,比如ChartColorTemplates.pastel()、ChartColorTemplates.material()等,直接将方法返回的颜色数组赋值给pieChartDataSet.colors即可使用官方预设配色

内容的提问来源于stack exchange,提问作者As If Prince

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:27:03