FLCharts: Create Bar Chart easily
Create beautiful and highly customisable bar, line, radar charts and many more with FLCharts, a flexible, easy-to-use library.
• 3 min read
Availability
iOS 11.0
FLCharts is a flexible, easy-to-use third-party library, allowing you to highly customise your chart.
FLCharts is an easy-to-use library to build highly customizable bar charts. It allows you to create your own chart bar.
Here I used some gas consumptions data to demonstrate how to set up a basic bar chart using FLCharts.
Install
You can install FLCharts through Cocoapods or Swift Package Manager.
Setting Up a Chart View
Firstly, make sure to import FLCharts to the top of the file.
import FLCharts
Setting Up Data
let monthsData = [MultiPlotable(name: "jan", values: [30]),
MultiPlotable(name: "feb", values: [55]),
MultiPlotable(name: "mar", values: [70]),
MultiPlotable(name: "apr", values: [45, 30]),
MultiPlotable(name: "may", values: [85]),
MultiPlotable(name: "jun", values: [46, 40]),
MultiPlotable(name: "jul", values: [75]),
MultiPlotable(name: "aug", values: [10]),
MultiPlotable(name: "set", values: [60]),
MultiPlotable(name: "oct", values: [75]),
MultiPlotable(name: "nov", values: [85]),
MultiPlotable(name: "dec", values: [55, 50, 20])]
Each MultiPlotable object represents the data of one month. The name value is the name of the month on the x axis and the values property is their consumptions on the y axis.
let chartData = FLChartData(title: "Consumptions",
data: monthsData,
legendKeys: [Key(key: "F1", color: .Gradient.purpleCyan),
Key(key: "F2", color: .green),
Key(key: "F3", color: .Gradient.sunset)],
unitOfMeasure: "kWh")
Here, we are setting up the data for the chart.
FLChartData contains all the data the chart needs to configure itself.
The title is shown when the chart is embedded in a FLCard.
The legendKeys define the color of the sections of the bar and the keys of the legend, if it is embedded in a FLCard.
FLCharts has a collection of colors and gradients to use in your chart. And you can create your own using the FLColor struct.
Creating chart
Then we create the actual chart with this simple line of code.
let chart = FLChart(data: chartData, type: .bar())
Tip
The bar chart allows you to create your own bar view simply creating a class that conforms to ChartBar protocol.
Now we have to layout the chart, in this example we will do it using AutoLayout.
view.addSubview(chart)
chart.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
chart.centerYAnchor.constraint(equalTo: view.centerYAnchor),
chart.centerXAnchor.constraint(equalTo: view.centerXAnchor),
chart.heightAnchor.constraint(equalToConstant: 300),
chart.widthAnchor.constraint(equalToConstant: 330)
])
And here is our bar chart.

Embed chart inside FLCard
Now, we can embed the chart inside a card.
let card = FLCard(chart: chart, style: .rounded)
card.showAverage = true
card.showLegend = false
This is all we need for this task.
As you may notice FLCard has some additional properties and the ability to customize the card itself through the style property.
FLCharts has two predefined styles: .plain and .rounded, but you can create your own using the FLCardStyle struct.
There is just one last thing to change in order to show the card. We must replace chart with card in the auto layout code.
view.addSubview(card)
card.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
card.centerYAnchor.constraint(equalTo: view.centerYAnchor),
card.centerXAnchor.constraint(equalTo: view.centerXAnchor),
card.heightAnchor.constraint(equalToConstant: 300),
card.widthAnchor.constraint(equalToConstant: 330)
])
Final result

Highlight view
FLCharts allows you to display a view when tapping on a bar. The library has a default one but you can create your own creating a class that conforms to the protocol HighlightedView.
Here's an example:

Additional features
FLCharts has additional properties the allows you to further customize your charts.
You can assign your own configuration through the config property:
chart.config = FLChartConfig(granularityY: 20)
Aware x FLCharts

GitHub
Check out the library here.
Conclusion
For your time and attention! I hope you enjoyed this article and FLCharts.
If you have suggestions or feedbacks, they are really welcomed and they help me improve the library.
If you have any question about this article, feel free to email me or tweet me @franceleonidev and share your opinion.
Thank you for reading and see you in the next article!
Share this article