SwiftUICharts
  • July 4, 2025

A simple line and bar charting library that support accessibility written using SwiftUI.

Usage


You can find all the examplesΒ here.

Vertical bar chart

let highIntensity = Legend(color: .orange, label: “High Intensity”, order: 5)
let buildFitness = Legend(color: .yellow, label: “Build Fitness”, order: 4)
let fatBurning = Legend(color: .green, label: “Fat Burning”, order: 3)
let warmUp = Legend(color: .blue, label: “Warm Up”, order: 2)
let low = Legend(color: .gray, label: “Low”, order: 1)

let limit = DataPoint(value: 130, label: “5”, legend: fatBurning)

let points: [DataPoint] = [
.init(value: 70, label: “1”, legend: low),
.init(value: 90, label: “2”, legend: warmUp),
.init(value: 91, label: “3”, legend: warmUp),
.init(value: 92, label: “4”, legend: warmUp),
.init(value: 130, label: “5”, legend: fatBurning),
.init(value: 124, label: “6”, legend: fatBurning),
.init(value: 135, label: “7”, legend: fatBurning),
.init(value: 133, label: “8”, legend: fatBurning),
.init(value: 136, label: “9”, legend: fatBurning),
.init(value: 138, label: “10”, legend: fatBurning),
.init(value: 150, label: “11”, legend: buildFitness),
.init(value: 151, label: “12”, legend: buildFitness),
.init(value: 150, label: “13”, legend: buildFitness),
.init(value: 136, label: “14”, legend: fatBurning),
.init(value: 135, label: “15”, legend: fatBurning),
.init(value: 130, label: “16”, legend: fatBurning),
.init(value: 130, label: “17”, legend: fatBurning),
.init(value: 150, label: “18”, legend: buildFitness),
.init(value: 151, label: “19”, legend: buildFitness),
.init(value: 150, label: “20”, legend: buildFitness),
.init(value: 160, label: “21”, legend: highIntensity),
.init(value: 159, label: “22”, legend: highIntensity),
.init(value: 161, label: “23”, legend: highIntensity),
.init(value: 158, label: “24”, legend: highIntensity),
]

BarChartView(dataPoints: points, limit: limit)

Horizontal bar chart

let warmUp = Legend(color: .blue, label: “Warm Up”, order: 2)
let low = Legend(color: .gray, label: “Low”, order: 1)

let points: [DataPoint] = [
.init(value: 70, label: “1”, legend: low),
.init(value: 90, label: “2”, legend: warmUp),
.init(value: 91, label: “3”, legend: warmUp),
.init(value: 92, label: “4”, legend: warmUp)
]

HorizontalBarChartView(dataPoints: points)

Line chart

let buildFitness = Legend(color: .yellow, label: “Build Fitness”, order: 4)
let fatBurning = Legend(color: .green, label: “Fat Burning”, order: 3)
let warmUp = Legend(color: .blue, label: “Warm Up”, order: 2)
let low = Legend(color: .gray, label: “Low”, order: 1)

let points: [DataPoint] = [
.init(value: 70, label: “1”, legend: low),
.init(value: 90, label: “2”, legend: warmUp),
.init(value: 91, label: “3”, legend: warmUp),
.init(value: 92, label: “4”, legend: warmUp),
.init(value: 130, label: “5”, legend: fatBurning),
.init(value: 124, label: “6”, legend: fatBurning),
.init(value: 135, label: “7”, legend: fatBurning),
.init(value: 133, label: “8”, legend: fatBurning),
.init(value: 136, label: “9”, legend: fatBurning),
.init(value: 138, label: “10”, legend: fatBurning),
.init(value: 150, label: “11”, legend: buildFitness),
.init(value: 151, label: “12”, legend: buildFitness),
.init(value: 150, label: “13”, legend: buildFitness)
]

LineChartView(dataPoints: points)

Installation


Add this Swift package in Xcode using its Github repository url. (File > Swift Packages > Add Package Dependency…)

GitHub


View Github

#chart #swiftui
YOU MIGHT ALSO LIKE...
SwiftUI Charts

Build custom charts with SwiftUI Styles      

Swipeable cards

Swipeable Cards with SwiftUI

RGStack

This UI attempts to capture the Quibi Card Stack and the associated User Interaction.

πŸƒ CardStack

A easy-to-use SwiftUI view for Tinder like cards on iOS, macOS & watchOS.

SlideOverCard

A SwiftUI card design similar to the one used by Apple in HomeKit, AirPods, Apple Card and AirTag setup, NFC ...