Я пытаюсь нарисовать график температуры, используя изо-диаграммы, где данные оси x будут установлены из метки времени сервера, но метки будут читаемым текстом.

Например, метка оси X графика будет начинаться в 00:00 понедельника и заканчиваться в 12:00 вторника, но LineChartDataSet будет представлять собой набор значений температуры (ось Y) и временных меток для x

Для отображения метки времени у меня есть настраиваемый параметр valueFormatter, как показано ниже (который отлично работает) lineChartView.xAxis.valueFormatter = timestampXAxisFormatter () // конвертирует временную метку в строку даты

Мой вопрос: LineChartDataSet, похоже, проиндексирован, что вызывает некоторые проблемы: если у меня есть 4 точки данных, такие как (9:00, 10), (9:15, 11), (12:00, 15), (13:00, 16) 4 точки установлены на графике через равные промежутки времени (я ожидал, что 2 точки будут слева от графика, а затем последние 2 точки справа) - Есть ли способ получить набор данных, который на основе значения x вместо индекса?

Я видел, что у ChartData есть init, который принимает массив NSObjects, но затем преобразует его в строки ... Заранее благодарим за любые предложения, которые могут у вас возникнуть!

Xav

Ответов: 1

Ответы (1)

Нет хорошего способа решить эту проблему, поскольку вы догадались, что ось x основана на индексах.

У вас есть два варианта:

  1. вставьте множество значений x между каждым действительным значением x, например, между 9:00 и 9:15, вы вручную вставляете 9:01, 9:02, ..., 9:14, но не добавляете любую запись с этими значениями, просто игнорируйте ее и продолжайте. ios-диаграммы будут пропущены, если запись не найдена, и перейдут к следующей. Это будет нормально работать, если у вас нет большого количества значений для вставки. Пробовал ~ 1000 значений, производительность приемлемая.

  2. вы создаете свою собственную диаграмму, используя две оси y, одну как ось x и одну как ось y, поэтому расстояния до точки 0 рассчитываются по значению. Однако для этого необходимо глубоко понять логику ios-диаграммы. Если вам это удастся, вы можете подать PR.

2022 WebDevInsider