BarChart中酒吧的不同颜色取决于价值

时间:2016-11-05 10:06:24

标签: swift ios-charts

如何在条形图中更改单个条形的颜色(取决于其值)? 例如:我的条形图中有五个不同的值(=五个不同的条形图)。值小于30的所有条形应为红色,所有条形均为30至70橙色,所有70以上的条形应为绿色。

3 个答案:

答案 0 :(得分:9)

在ios-charts中,条形图的颜色设置在一个数组中。例如,如果您的数据集名为barChartDataset,则可以设置这样的颜色

barChartDataset.colors = [UIColor.red,UIColor.orange,UIColor.green,UIColor.black,UIColor.blue]

条形将按此顺序具有这些颜色并将重复。所以如果你有10个酒吧,你就会有2个红条等。

在您的情况下,您只需要编写一个函数来返回正确的颜色值,并将其附加到数组中。参考下面的代码。

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
    }
}

然后,无论您在何处设置图表,都要使用

 barChartDataset.colors = [setColor(barOneValue),setColor(barTwoValue),setColor(barThreeValue),setColor(barFourValue),setColor(barFiveValue)]

希望这有帮助!

答案 1 :(得分:0)

他们的API还附带了一些预定义的颜色模板,您可以使用这些模板为数据集设置不同的颜色。它们包括:

  • ChartColorTemplates.liberty()
  • ChartColorTemplates.joyful()
  • ChartColorTemplates.pastel()
  • ChartColorTemplates.colorful()
  • ChartColorTemplates.vordiplom()

您可以这样使用它们:

chartDataSet.colors = ChartColorTemplates.colorful()

参考:https://www.appcoda.com/ios-charts-api-tutorial/

答案 2 :(得分:0)

在danielgindi图表的条形图中,可以通过以下代码从“ ChartColorTemplate.swift”文件中更改条形颜色-

 @objc open class func material () -> [NSUIColor]
    {
        return [
            NSUIColor(red: 46/255.0, green: 204/255.0, blue: 113/255.0, alpha: 1.0),
            NSUIColor(red: 241/255.0, green: 196/255.0, blue: 15/255.0, alpha: 1.0),
            NSUIColor(red: 231/255.0, green: 76/255.0, blue: 60/255.0, alpha: 1.0),
            NSUIColor(red: 52/255.0, green: 152/255.0, blue: 219/255.0, alpha: 1.0)
        ]
    }