Как вы обнаружили, вам нужно использовать двойное (или числовое значение) в качестве значения для x.В тех случаях, когда я наносил это на график до дат, мой метод состоял в том, чтобы преобразовать дату в числовое значение, используя секунды с начала эпохи и преобразовав в дни, используя: -
date.timeIntervalSince1970 / secondsPerDay
где (достаточно точно): -
let secondsPerDay = 24.0 * 3600.0
Чтобы отформатировать дату на оси для средства просмотра, я затем использую такой форматер: -
class DateAxisValueFormatter : NSObject, IAxisValueFormatter
{
let dateFormatter = DateFormatter()
override init()
{
super.init()
dateFormatter.dateFormat = "dd MMM"
}
func stringForValue(_ value: Double, axis: AxisBase?) -> String
{
let date = Date(timeIntervalSince1970: value * secondsPerDay)
return dateFormatter.string(from: date)
}
}
, который преобразует значение, которое я использовал обратнов правильный текст.Если вы установите
lineChart.xAxis.valueFormatter = DateAxisValueFormatter()
lineChart.xAxis.granularity = 1.0
, то в нижней части вы увидите только дни.
Итак, в итоге:
- Найдите числовое преобразование для даты.
- Используйте это для значения
- Преобразовать обратно в дату в форматере.