cannot set custom colors for pie charts

蹲街弑〆低调 提交于 2020-06-27 16:58:12

问题


I am using iOS charts to make a pie chart, and I cannot figure out how to set the colors as custom colors with RGBA values. here is the code

        var  colors: [UIColor] = []
        colors.append(UIColor.init(red: 206, green: 173, blue: 128, alpha: 1))
        colors.append(UIColor.init(red: 136, green: 169, blue: 132, alpha: 1))
        colors.append(UIColor.init(red: 183, green: 73, blue: 32, alpha: 1))
        colors.append(UIColor.init(red: 106, green: 152, blue: 150, alpha: 1))
        colors.append(UIColor.init(red: 226, green: 120, blue: 123, alpha: 1))
        colors.append(UIColor.init(red: 47, green: 122, blue: 153, alpha: 1))

        chartDataSet.colors = colors

but it doesn't work and the chart looks like

this

edit: here is the rest of the function


    func updateChartData() {

        let chartDataSet = PieChartDataSet(entries: moods, label: nil)
        let chartData = PieChartData(dataSet: chartDataSet)
        chartDataSet.drawValuesEnabled = false
        pieChartVIew.drawEntryLabelsEnabled = false

        var  colors: [UIColor] = []
        colors.append(UIColor.init(red: 206, green: 173, blue: 128, alpha: 1))
        colors.append(UIColor.init(red: 136, green: 169, blue: 132, alpha: 1))
        colors.append(UIColor.init(red: 183, green: 73, blue: 32, alpha: 1))
        colors.append(UIColor.init(red: 106, green: 152, blue: 150, alpha: 1))
        colors.append(UIColor.init(red: 226, green: 120, blue: 123, alpha: 1))
        colors.append(UIColor.init(red: 47, green: 122, blue: 153, alpha: 1))

        chartDataSet.colors = colors


        pieChartVIew.holeColor = UIColor.clear
        pieChartVIew.data = chartData
}

and here is where I set the values

    var happyDataEntry = PieChartDataEntry(value: 0)
    var happyCount = 0
    var moods = [PieChartDataEntry]()

    override func viewDidLoad() {
        super.viewDidLoad()

        happyDataEntry.value = Double(happyCount)
        happyDataEntry.label = "happy!"
        moods = [happyDataEntry}
        updateChartData()

}

回答1:


I have updated your code a bit: (Value changed to: var happyCount = 1)

var happyDataEntry = PieChartDataEntry(value: 0)
var happyCount = 1
var moods = [PieChartDataEntry]()

viewDidLoad Method:

override func viewDidLoad() {
    super.viewDidLoad()

    happyDataEntry.value = Double(happyCount)
    happyDataEntry.label = "happy!"
//  moods.append(happyDataEntry)   //If you uncomment this line you will see pie chart with 2 colors. 
    moods.append(happyDataEntry)
    updateChartData()
}

Updated Chart method: (I have updated the color init, please take a look. )

func updateChartData() {        
    let chartDataSet = PieChartDataSet(entries: moods, label: nil)
    let chartData = PieChartData(dataSet: chartDataSet)
    chartDataSet.drawValuesEnabled = false
    pieChartVIew.drawEntryLabelsEnabled = false

    var  colors: [UIColor] = []
    colors.append(UIColor.init(red: 206.0/255.0, green: 173.0/255.0, blue: 128.0/255.0, alpha: 1.0))
    colors.append(UIColor.init(red: 136.0/255.0, green: 169.0/255.0, blue: 132.0/255.0, alpha: 1.0))
    colors.append(UIColor.init(red: 183.0/255.0, green: 73.0/255.0, blue: 32.0/255.0, alpha: 1.0))
    colors.append(UIColor.init(red: 106.0/255.0, green: 152.0/255.0, blue: 150.0/255.0, alpha: 1.0))
    colors.append(UIColor.init(red: 226.0/255.0, green: 120.0/255.0, blue: 123.0/255.0, alpha: 1.0))
    colors.append(UIColor.init(red: 47.0/255.0, green: 122.0/255.0, blue: 153.0/255.0, alpha: 1.0))

    chartDataSet.colors = colors


    pieChartVIew.holeColor = UIColor.clear
    pieChartVIew.data = chartData
}

Please comment if you have any questions.

Happy to help!



来源:https://stackoverflow.com/questions/61266997/cannot-set-custom-colors-for-pie-charts

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!