Avoopihra
Avoopihra

Reputation: 45

Change bar color in chart

I'm struggling with charts (I use the wonderful Charts library). I had another problem, the solution of which I could not find. I have a horizontal chart, everything is relatively fine with it, but I need the new bar that I add to be of a different color and with a new label on the y-axis (in a horizontal chart, this is the x-axis).

This is what my chart looks like enter image description here

This is what I need to get enter image description here

This is the code where you can see how I add the bar

    let barWidth = 5.3
    let spaceForBar = 10.3
    var n = 0
    var yVals = (0..<count).map { (i) -> BarChartDataEntry in
        let val = items.map{Double($0.iqLevel)}[n]
        n += 1
        return BarChartDataEntry(x: Double(i)*spaceForBar, y: val)
    }
    let userData = testResultItem(group: "New user", iqLevel: 118).iqLevel
    let newEntry = BarChartDataEntry(x: 2.5*spaceForBar, y: Double(userData))
    yVals.append(newEntry)
    
    let chartDataSet = BarChartDataSet(entries: yVals)

I would be immensely grateful to everyone who can help at least some advice!

Upvotes: 0

Views: 458

Answers (1)

Nirav D
Nirav D

Reputation: 72410

You can create a separate BarChartDataSet for this single user entry and set a different color for it.

let yVals = (0..<count).map { (i) -> BarChartDataEntry in
    let val = items.map{Double($0.iqLevel)}[n]
    n += 1
    return BarChartDataEntry(x: Double(i)*spaceForBar, y: val)
}
let userData = testResultItem(group: "New user", iqLevel: 118).iqLevel
let userEntry = BarChartDataEntry(x: 2.5*spaceForBar, y: Double(userData))
let chartDataSet = BarChartDataSet(entries: yVals)
chartDataSet.setColor(YourCurrentColor)
let userDataSet = BarChartDataSet(entries: [userEntry])
userDataSet.setColor(DarkGreenColor) //For user entry
let barChartData = BarChartData(dataSets: [chartDataSet, userDataSet])

Upvotes: 1

Related Questions