Как пропустить нулевые значения при построении диаграммы SwiftUIIOS

Программируем под IOS
Ответить
Anonymous
 Как пропустить нулевые значения при построении диаграммы SwiftUI

Сообщение Anonymous »

Я рисую диаграмму SwiftUI на основе структуры, которая выглядит следующим образом:

Код: Выделить всё

struct BestWeights: Identifiable
{
let id = UUID()
let date: String
let maxWeight: Int
}
Затем я создаю массив этой структуры, который буду использовать для построения диаграммы:

Код: Выделить всё

 private var bestWeights: [BestWeights] {
let unformattedMonth = DateFormatter().monthSymbols[month - 1]
let formattedMonth =  String(unformattedMonth.prefix(3))
bestWeights.append(BestWeights(date: formattedMonth, maxWeight: bestWeightOfPeriod))

//decrementing down one month
selectedDate = Calendar.current.date(byAdding: .month, value: -1, to: selectedDate) ?? selectedDate
}
Затем я просматриваю bestWeights и отображаю их на графике:

Код: Выделить всё

Chart {
ForEach(bestWeights) { bestWeight in

LineMark(x: .value("Date",bestWeight.date), y: .value("MaxWeight", bestWeight.maxWeight))
.symbol {
Circle()
.fill(.blue)
.frame(width: 7, height: 7)
}
}
}
Результат:
Изображение

Это не то, чего я хочу. Я не хочу, чтобы 0 отображались на оси Y. Поэтому я добавил проверку, чтобы не добавлять bestWeight с весом, равным 0:

Код: Выделить всё

if(bestWeightOfPeriod != 0) {
bestWeights.append(BestWeights(date: formattedMonth, maxWeight: bestWeightOfPeriod))
}
Это именно то, что я хочу, но это создает еще одну проблему на моей оси X, где пропускаются месяцы. Это идет с февраля прямо по июнь. Я все еще хочу отметить все месяцы. Поскольку дата хранится в моей структуре и она пропускает месяцы, имеющие вес 0, диаграмма помечается неправильно.
Как мне пометить недостающие месяцы?
Изображение

Мне нужна ось Y второе изображение, а не ось X первого изображения.

Подробнее здесь: https://stackoverflow.com/questions/788 ... ftui-chart
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»