Я использую https://github.com/danielgindi/Charts
Что я хочу, чтобы произошло:
Я хочу, чтобы на графике было 2 галочки / метки по оси X с пользовательскими значениями меток Мои значения по оси X указаны в дате / времени (я использую DateTimeFormatter, основанный на IAxisValueFormatter). Например, если мой минимум по оси X составляет 13:00, а максимум по оси X - 16:00, а количество меток установлено на 2, как я могу настроить то, что я хочу, чтобы значения меток были? Я хочу, чтобы значения в этом сценарии были 14:00 для метки 1 и 15:00 для метки 2 .
Возможно ли это с этой библиотекой?
Что на самом деле происходит:
Отображает 2 метки оси X на графике со значениями метка 1 = 14:40 и метка 2 = 3: 46
Примечание:
Я добавляю новую точку данных каждую минуту, поэтому я начинаю с пустого набора данных и раз в минуту добавляю запись в набор данных следующим образом:
...
let entry = ChartDataEntry(x: point.x, y: point.y)
lineChartDataSet?.addEntryOrdered(entry)
lineChartData?.notifyDataChanged()
view.notifyDataSetChanged()
view.reloadInputViews()
Это код для установки количества меток xAxis и мин / макс:
xAxis.labelCount = 2
xAxis.axisMinimum = 1553274000.0 //double value equivalent of 1 pm (timeIntervalSince1970)
xAxis.axisMaximum = 1553284800.0 //double value equivalent of 4 pm (timeIntervalSince1970)
Вот мой форматер значений оси для отображения даты и времени:
public class GraphDateTimeFormatter: NSObject, IAxisValueFormatter {
private let dateFormatterHourMin = DateFormatter()
private let dateFormatterMonthDay = DateFormatter()
override init() {
super.init()
dateFormatterHourMin.dateFormat = "hh mm a"
dateFormatterMonthDay.dateFormat = "MMM dd"
}
public func stringForValue(_ value: Double, axis: AxisBase?) -> String {
let time = dateFormatterHourMin.string(from: Date(timeIntervalSince1970: value))
let monthDay = dateFormatterMonthDay.string(from: Date(timeIntervalSince1970: value))
return "\(time)\n\(monthDay)"
}