I am trying to apply padding on AxisValueLabel
Text
with orientation: .verticalReversed
but it’s not working properly. Result is showing with stretched value.
struct Workout: Identifiable {
let id = UUID()
let day: String
let minutes: Int
}
extension Workout {
static let walkWorkout: [Workout] = [
.init(day: NSLocalizedString("mon", comment: ""), minutes: 23),
.init(day: "Tue", minutes: 35),
.init(day: "Wed", minutes: 55),
.init(day: "Thu", minutes: 30),
.init(day: "Fri", minutes: 15),
.init(day: "Sat", minutes: 65),
.init(day: "Sun", minutes: 81),
]
static let runWorkout: [Workout] = [
.init(day: NSLocalizedString("mon", comment: ""), minutes: 16),
.init(day: "Tue", minutes: 12),
.init(day: "Wed", minutes: 55),
.init(day: "Thu", minutes: 34),
.init(day: "Fri", minutes: 22),
.init(day: "Sat", minutes: 43),
.init(day: "Sun", minutes: 90),
]
}
import Charts
import SwiftUI
struct YAxisVerticalLabel: View {
let workoutData = [
(workoutType: "Walk", data: Workout.walkWorkout),
(workoutType: "Run", data: Workout.runWorkout)
]
var body: some View {
VStack {
Chart {
ForEach(workoutData, id: .workoutType) { element in
ForEach(element.data) {
BarMark(
x: .value("Day", $0.day),
y: .value("Workout(in minutes)", $0.minutes)
)
}
.foregroundStyle(by: .value("Workout(type)", element.workoutType))
.position(by: .value("Workout(type)", element.workoutType))
}
}
.frame(height: 200)
.chartYAxis {
AxisMarks(position: .leading) {
axis in
AxisGridLine()
AxisValueLabel(
centered: true,
orientation: .verticalReversed // Applying orientation here
) {
Text("(axis.index * 25)s")
.foregroundStyle(.black)
// .padding(.bottom, 8) // applying padding on text but not working properly
}
}
}
}
}
}
I am getting result without padding as below –
and when I am applying padding (.padding(.bottom, 8)), text is getting stretched and also moving towards left from dotted vertical line as below –
I just want to apply a padding to move text upward with some pixels.
Any suggestion will be helpful. Thanks in advance.