Estou tentando criar um gráfico de linhas SwiftUI. Por padrão, os rótulos y são desenhados ao lado das linhas de grade. Assim, o espaço disponível para o gráfico em si fica menor pela largura do rótulo. Para dar mais espaço ao gráfico, gostaria de mover o rótulo abaixo das linhas de grade.
Embora isso funcione usando AxisValueLabel(anchor: .topLeading)
, o gráfico não ocupa o espaço agora liberado. Em vez disso, o gráfico mantém a mesma largura que com os rótulos nas posições padrão.
Como mudar isso?
var body: some View {
Chart {
ForEach(0..<data.count, id: \.self) { i in
LineMark(
x: .value("X", i+1),
y: .value("Value", data.values[i])
)
.foregroundStyle(.red)
.interpolationMethod(.catmullRom)
.lineStyle(StrokeStyle(lineWidth: 4))
}
}
.chartYScale(domain: [0, data.maxValue])
.chartYAxis {
AxisMarks(position: .leading, values: .automatic(desiredCount: 4)) { value in
AxisGridLine()
// Default Labels
// AxisValueLabel()
// Hide 0 Label and move others under the line
if value.index > 0 {
AxisValueLabel(anchor: .topLeading)
}
}
}
.frame(height: 300)
.padding()
}
Isso é controlado pelo
AxisMarks
. Use a.inset
predefinição para que os rótulos dos eixos não ocupem esse espaço extra.