How can I change the color of a single bar, dependent on its value, in a bar chart? For example: I have five different values (= five different bars) in my bar chart. All bars that have a value less than 30 should be red, all bars between 30 and 70 orange, and all bars above 70 should be green.
In ios-charts, the colors of the bars are set in an array. If your dataset is called barChartDataset, for example, you would set the colors like this
barChartDataset.colors = [UIColor.red,UIColor.orange,UIColor.green,UIColor.black,UIColor.blue]
The bars will have these colors in this order and will repeat. So if you have 10 bars, you would have 2 red bars etc.
In your case, you just have to write a function to return the right color value, and attach it to the array. Reference the code below.
func setColor(value: Double) -> UIColor{
if(value < 30){
return UIColor.red
}
else if(value <= 70 && value >= 30){
return UIColor.orange
}
else if(value > 70){
return UIColor.green
}
else { //In case anything goes wrong
return UIColor.black
}
}
And then wherever you are setting the chart use
barChartDataset.colors = [setColor(barOneValue),setColor(barTwoValue),setColor(barThreeValue),setColor(barFourValue),setColor(barFiveValue)]
Hope this helps!
Their API also comes with some predefined color templates you can use to set different colors for the data set. They include:
- ChartColorTemplates.liberty()
- ChartColorTemplates.joyful()
- ChartColorTemplates.pastel()
- ChartColorTemplates.colorful()
- ChartColorTemplates.vordiplom()
You can use them this way :
chartDataSet.colors = ChartColorTemplates.colorful()
Reference : https://www.appcoda.com/ios-charts-api-tutorial/
来源:https://stackoverflow.com/questions/40436940/different-colors-for-bars-in-barchart-depend-on-value