Я использую диаграммы 3.1.1 и не могу понять, как сделать так, чтобы на диаграмме всегда отображались линии сетки по оси X:
В этом примере я хочу, чтобы диаграмма отображала линии сетки xAxis и метки после 25 апреля, то есть 26 апреля, 27 апреля, 28 апреля, 29 апреля, 30 апреля, 1 мая.
Я создал этот класс для генерации достаточного количества дат, чтобы заполнить пробелы, если для каждого последующего дня, который я хочу показать, нет точки данных:
class AxisValuesGenerator: NSObject {
var days: [String]? = []
func generatexAxisDates(liftEvents: [LiftEvent]) -> [String]? {
var dates: [Date] = []
let intervalBetweenDates: TimeInterval = 3600 * 24 // 3600 = 1 hour
let firstDate = (liftEvents.first?.date)! // - intervalBetweenDates
var lastDate = liftEvents.last?.date
if Double(liftEvents.count) < 7 {
let daysToAdd = intervalBetweenDates * Double(7 - liftEvents.count)
lastDate = lastDate?.addingTimeInterval(daysToAdd)
for _ in 0...6 {
dates = self.intervalDates(from: firstDate, to: lastDate!, with: intervalBetweenDates)
}
} else {
dates = self.intervalDates(from: firstDate, to: lastDate!, with: intervalBetweenDates)
}
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM d"
days = dates.map {dateFormatter.string(from: $0)}
return days
}
func intervalDates(from startDate: Date, to endDate:Date, with interval:TimeInterval) -> [Date] {
guard interval > 0 else { return [] }
var dates:[Date] = [startDate]
var currentDate = startDate
while currentDate <= endDate {
currentDate = currentDate.addingTimeInterval(interval)
dates.append(currentDate)
}
return dates
}
и он генерирует нужные мне даты:
▿ Optional<Array<String>> ▿ some : 7 elements
- 0 : "Apr 25"
- 1 : "Apr 26"
- 2 : "Apr 27"
- 3 : "Apr 28"
- 4 : "Apr 29"
- 5 : "Apr 30"
- 6 : "May 1"
- 7 : "May 2"
но диаграмма не отображает их.
Как я могу получить диаграмму для отображения недостающих линий сетки?
UPDATE:
Я пытался установить setVisibleXRange
и setLabelCount
(принудительно) следующим образом:
chartView.setVisibleXRange(minXRange: 2.0, maxXRange: 6.0)
let leftAxis = chartView.leftAxis
leftAxis.setLabelCount(7, force: true)
и диаграмма отображается правильно, если у меня есть 6 или более значений для построения графика. Но вы можете видеть, что только с двумя значениями я могу форсировать линии, но метки xAxis неверны: