How can I change attributes (e.g. font size, text color, etc...) of text above a specific bar in a BarChart?
In this example, I want "-$5,000.00" in red and to increase the font size of every text above bars.
Here's some code:
@IBOutlet weak var barChartView: BarChartView!
// init barChartView --------------------------------------
barChartView.descriptionText = ""
barChartView.legend.enabled = false
// grid lines
barChartView.xAxis.drawAxisLineEnabled = false
barChartView.xAxis.drawGridLinesEnabled = false
barChartView.leftAxis.drawAxisLineEnabled = false
barChartView.leftAxis.drawGridLinesEnabled = false
barChartView.rightAxis.drawAxisLineEnabled = false
barChartView.rightAxis.drawGridLinesEnabled = false
// X-axis line
barChartView.xAxis.drawAxisLineEnabled = true
barChartView.xAxis.axisLineColor = axisGridsAndLabelsColor
// X-axis labels
barChartView.xAxis.labelTextColor = axisGridsAndLabelsColor
barChartView.xAxis.labelPosition = .Bottom
// Y-axis labels
accountsBarChartView.leftAxis.labelTextColor = axisGridsAndLabelsColor
accountsBarChartView.rightAxis.drawLabelsEnabled = false
//---------------------------------------------------------
// bar chart's data
var dataPoints = [String]()
var values = [Double]()
var colors = [UIColor]()
// build bar chart's data...
// dataEntries and barChartDataSet
var dataEntries = [ChartDataEntry]()
for i in 0..<dataPoints.count
{
let dataEntry = BarChartDataEntry(value: values[i], xIndex: i)
dataEntries.append(dataEntry)
}
let barChartDataSet = BarChartDataSet(yVals: dataEntries, label: "")
barChartDataSet.colors = colors
// valueFormatter
let currencyNumberFormatter = NSNumberFormatter()
currencyNumberFormatter.numberStyle = .CurrencyStyle
currencyNumberFormatter.minimumFractionDigits = 2
currencyNumberFormatter.maximumFractionDigits = 2
barChartDataSet.valueFormatter = currencyNumberFormatter
// barChartData
let barChartData = BarChartData(xVals: dataPoints, dataSet: barChartDataSet)
barChartView.data = barChartData
To set your own colors/font you can use properties valueColors
and 'valueFont' of BarChartDataSet
class
So it'll be something like this
...
var valueColors = [UIColor]()
// dataEntries and barChartDataSet
var dataEntries = [ChartDataEntry]()
for i in 0..<dataPoints.count
{
let dataEntry = BarChartDataEntry(value: values[i], xIndex: i)
dataEntries.append(dataEntry)
if values[i] < 0 {
valueColors.append(UIColor.redColor())
}
else {
valueColors.append(UIColor.greenColor())
}
}
let barChartDataSet = BarChartDataSet(yVals: dataEntries, label: "")
barChartDataSet.colors = colors
barChartDataSet.valueColors = valueColors
barChartDataSet.valueFont = *font you want*
If you want to change the text attributes of labels below bars you can use:
barChartView.xAxis.labelFont = UIFont.systemFont(ofSize: 5)
barChartView.xAxis.labelTextColor = UIColor.red
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With