Привет, я делаю линейную диаграмму со следующими примерами точек данных:
(0,0)
(1,0)
(5,0)
Есть ли способ получить отображение трех точек, чтобы они правильно масштабировались? Прямо сейчас, если я добавлю набор данных с 2 массивами, все 3 точки будут на одинаковом расстоянии друг от друга. Я знаю, что в MPAndroidCharts есть ветка об этом, но мне было интересно, знает ли кто-нибудь, как это сделать в iOS. Большое спасибо!
Вы говорите, что в настоящее время они находятся на равном расстоянии от xAxis, и вы хотите, чтобы xAxis вел себя как yAxis?
Привет Сюань,
да. Эти 3 точки находятся на одинаковом расстоянии друг от друга по оси x. Следовательно, график
(0,0) (1,0) (2,0) выглядит так же, как (0,0) (1,0) (100,0), за исключением меток. Я бы хотел, чтобы (0,0) и (1,0) были очень близко друг к другу, а (1,0) и (100,0) далеко друг от друга. Я не уверен, имеет ли это смысл. Спасибо за ответ!
Лучший,
Феликс
8 июля 2015 г. в 19:53 Сюань [email protected] написал:
Вы говорите, что на xAxis они равные расстояния?
-
Ответьте на это письмо напрямую или просмотрите его на GitHub.
Отлично, я был первым (наверное) человеком, который попросил об этой функции. Я отправил запрос как для Android, так и для iOS, но ответа пока нет ... Я надеюсь, что все больше и больше людей поймут, что это важная функция для профессиональных пользователей.
@PhilJay и @danielgindi Я думаю, что мы стремимся предоставлять графики мирового уровня. Я хотел бы помочь в этом, однако я не могу видеть полную картину для всех функций внутри проектов. Вы, ребята, лучше это понимаете. Из того, что я пробовал, рендеринг xAxis, как yAxis, не самая сложная часть, меня мешает то, что метки xAxis находятся не в нужном месте при масштабировании и масштабировании. Я до сих пор не понимаю, как правильно отображать метки, учитывая ширину и положение метки.
К вашему сведению, https://github.com/danielgindi/ios-charts/issues/176 и https://github.com/PhilJay/MPAndroidChart/issues/821 - это тот же запрос, который я подал.
Мы знаем, что это становится популярной функцией. Это довольно сложно реализовать, и нам еще не нужно его проектировать ...
Это, конечно, включает в себя изменение всей системы координат на что-то, что не может принимать ничего относительно оси X. У нас еще нет подробностей, но я планирую изучить эту тему в ближайшее время.
«Скоро» означает, когда у меня есть время просидеть на нем всю ночь. У меня сейчас есть планы на свадьбу, поэтому вы видите, что я здесь немного менее активен :-)
@danielgindi ОГРОМНЫЕ поздравления тебе из Китая!
Можете ли вы дать нам приблизительное представление о том, когда это может быть реализовано? И поздравляю!
@aaga Я думаю, что на это уходит много времени, поскольку логика совсем другая и есть над чем подумать и переписать. Могут быть месяцы, даже если у него высокий приоритет.
+1 за эту функцию
Привет, я новичок в iOS, работаю с Swift. Я использую эту прекрасную библиотеку диаграмм. Я делаю линейную диаграмму с датами на оси x и не могу построить правильно масштабированные точки (даты). Пытался передать NSDates в xVals. Я не знаю, что не так с тем, как я делаю ... пожалуйста, помогите мне.
Вы можете преобразовать даты во временные интервалы, чтобы использовать их в качестве значений X. Затем вы можете отформатировать временной интервал до дат для отображения на оси X.
@ petester42 @ shrikantwalekar-tudi, но обратите внимание, что последующие точки данных по оси X будут представлены эквидистантно, даже если временной интервал между точками данных не равноудален.
Следовательно, я думаю, что мы можем интерпретировать комментарий @ shrikantwalekar-tudip как: +1
Привет, я сделал это, и это сработало !!, но если вся моя ось x состоит из тысячи значений и если точки для построения меньше 10 точек. Я получаю что-то подобное при прокрутке после увеличения.
Пока не было зазора как на показе.
Не уверен, что понимаю.
Может ли кто-нибудь помочь мне с этим, пожалуйста !!! Любая помощь будет оценена по достоинству! Спасибо!!!
Это очень важно
+1 для меня эта функция была бы ДЕЙСТВИТЕЛЬНО прорывом
+1
+1 для меня тоже
+1 мне тоже. Вы не можете использовать ось X для представления времени без этой функции, поскольку большинство данных не поступает через равноудаленные интервалы времени.
+1 Работают над этим?
Со своей стороны я собираюсь начать этим заниматься. Поскольку меня больше всего беспокоит использование оси x для представления времени, для начала я собираюсь поддерживать только аффинные преобразования из значений x в пространство пикселей. Я полагаю, что другой ключ добавит структуру для форматирования значений по оси x в соответствующие метки. Конечно, если исправление ждет своего часа, я воздержусь. :)
@ StephanieB5 Я в такой же ситуации. Я собираюсь взглянуть и попытаться получить лучшее представление о том, что требуется. Если вам нужна помощь или вы хотите что-то обсудить, дайте мне знать. Было бы неплохо получить представление о дорожной карте для этой функции, если она есть, @danielgindi или @PhilJay https://github.com/PhilJay/MPAndroidChart/issues/12 ?
@RyGuyM здорово спрашивает о дорожной карте для этой функции. Кроме того, было бы здорово сотрудничать. :) Я разветвил это репо и начинаю прототипировать идею, которая у меня есть. Если над этим больше никто не работает, мы можем перенести наш разговор в мое репо. Я пингую вас оттуда на всякий случай.
Спасибо вам, ребята! Вот что я пробовал: реализовать ось x и средство визуализации точно так же, как работает ось y. Идея ясна, но проблема в том, что нужно учесть множество вещей, чтобы сделать его хорошим дизайном и реализацией с точки зрения фреймворка, плюс часть Android. Вот почему двигаться вперед медленно.
Если вы просто хотите решить вашу проблему, вы можете посмотреть, как реализована ось y горизонтальной гистограммы, поскольку она уже находится в позиции «ось x». так что вы можете позаимствовать эту ось y в качестве оси x.
Если вы серьезно хотите, чтобы он был объединен с мастером (чего я желаю), и у вас есть ветка для отслеживания обсуждения и прогресса, дайте мне ссылку, и мы сможем продолжить, я посмотрю, чем я могу помочь и предложить.
@danielgindi Я бы также посоветовал сделать следующее убийство: танцор:
Спасибо @ liuxuan30. :) Я сейчас просто играюсь в своей тестовой ветке. Я разбил свою идею на этапы, поэтому какое-то время у меня не будет ничего готового для основной ветки. Однако при желании вы всегда можете следить за моими дополнительными обновлениями.
@ liuxuan30 Спасибо за ответ! Я приложу серьезные усилия, чтобы поработать над этим в ближайшие недели, и я хотел бы, чтобы это также вернулось в проект. Эта библиотека великолепна, но, к сожалению, для меня это просто препятствие. Завтра я начну организовываться с @ StephanieB5, и мы можем начать отслеживать обсуждение.
+1
+1
Есть ли какое-либо расчетное время прибытия, когда эта функция будет введена? В настоящий момент я работаю над проектом, для которого требуется эта функция, поскольку мы отображаем данные временной шкалы на графике, поэтому необходимо правильно масштабировать ось x.
Нет, расчетного времени прибытия нет
+1
+1
+1
Мне это тоже нужно, но на данный момент, каков подходящий обходной путь для изменения значений оси x для нерегулярных данных временных рядов? Т.е. если у меня есть
(4/25, 5)
(4/29, 10)
(5/10, 15)
(5/11, 20)
(7/4, 25)
Какие данные я могу использовать для создания графика, который надлежащим образом отображает количество времени между каждой точкой данных, чтобы точка данных 7/4 отображалась как ~ 60 дней от предыдущей точки данных вместо того, чтобы отображаться как 1 день.
Работает что-то вроде этого:
(4/25, 5)
(4/26, ноль)
(4/27, ноль)
(4/28, ноль)
(4/29, 10)
(4/30, ноль)
(5/1, ноль)
так далее...
Я пробовал поиграть с этим, но получаю ошибки, когда количество xVals не равно количеству yVals.
если у вас нет значения y для xIndex, просто не вставляйте значения y в массив
Извините, репозиторий перепутал :-)
Эта функция скоро будет доступна :-)
@PhilJay , это отличные новости! Я просто пробую эту библиотеку в первый раз, но поскольку мой вариант использования - это данные временных рядов, мне действительно нужно, чтобы все работало.
Я работаю над переносом бета-изменений из репозитория Android, и он скоро будет доступен :-)
Включает ли эта миграция все новые функции версии 3.0, включая разбросанные значения x?
10 июля 2016 г., в 8:06, Дэниел Коэн Гинди [email protected] написал:
Я работаю над переносом бета-изменений из репозитория Android, и он скоро будет доступен :-)
-
Вы получили это, потому что прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub или отключите чат.
Приятно видеть, что эта функция уже была запрошена и работа над ней уже проделана. Я с нетерпением жду решения, так как мне нравится эта библиотека, но я не могу использовать ее в своих приложениях, если диаграммы не пропорциональны по оси X.
Я верю, что он скоро выйдет, давно пора!
Я не могу дождаться, когда эта функция станет доступной, она мне действительно нужна, поскольку мое приложение использует ось X, основанную на времени.
@danielgindi спасибо за вашу отличную работу! Была ли у вас возможность перенести изменения Android, чтобы включить эту функцию? Может как эту фичу использовать? Спасибо еще раз!
ветка уже есть. Однако все еще не исправлена ошибка
@ liuxuan30 какая это ветка? 3.0?
@rlimberger v3 ветка
Спасибо. Есть ли пример того, как использовать эту функцию (нерегулярный интервал x и разные значения x для разных наборов данных)?
@rlimberger Должен быть похожий подход. Вы можете проверить ветку v3, чтобы увидеть, есть ли пример ChartsDemo (извините, у меня нет времени проверить прямо сейчас)
Демонстрация Objc работает достаточно хорошо, чтобы продемонстрировать возможности v3. Спасибо @ liuxuan30! Кстати, а можно ли сделать точечную диаграмму с линией, соединяющей точки (отдельная линия для каждого набора данных)? В отличие от демонстрации Multiple Lines Chart, демонстрация Scatter Chart, кажется, показывает независимый набор значений x для каждого набора данных, а это именно то, что я хочу. Однако я бы хотел, чтобы все точки в каждом наборе данных были соединены отдельной линией.
неважно; Я нашел ответ на свой вопрос. И LineChartDataSet, и ScatterChartDataSet инициализируются массивом объектов ChartDataEntry, каждый из которых может иметь полностью независимый (x, y) набор. Потрясающие!
Да, круто :-)
Мы почти готовы к v3, некоторым последним исправлениям и т. Д.
В основном - мы хотим, чтобы пользователи сейчас протестировали ветку v3
, сообщили нам, добавили ли мы какие-либо новые ошибки.
Этот вопрос сейчас будет закрыт (ура !!!)
Мой код теперь вылетает с сообщением «NSInvalidArgumentException», причина: «- [Charts.ChartDataEntry encodeWithCoder:]: нераспознанный селектор, отправленный экземпляру ...» »при выполнении NSKeyedArchiver.archivedData (withRootObject :) с аргументом типа ChartDataEntry. Раньше этого не было. Возможно ли, что это из-за ошибки в v3?
Неважно. Это не ошибка в версии 3, которая вызвала сбой моего кода. Мне просто пришлось заново добавить соответствие класса ChartDataEntry к NSCoding.
Кто-нибудь еще получает эту ошибку: «Ошибка: это приложение или используемая им библиотека передали недопустимое числовое значение (NaN или не-число) в CoreGraphics API».
Обратная трассировка указывает: "
Где я могу найти пример неэквидистантных данных x (например, даты)?
То есть я хотел бы создать такой график:
Является ли это возможным?
Значения осей y и x установлены неправильно.
`if (! UIUtils.isEmpty (mModel.getChartData ())) {
for (Списки строк: mModel.getChartData (). split (",")) {
if (списки! = null) {
Строка [] str = lists.split (":");
mXAxisNames.add (стр [0]);
mYAxisNames.add (стр [1]);
}
}
число с плавающей запятой = mYAxisNames.size ();
ArrayList
for (int i = 0; i <mYAxisNames.size (); i ++) {
yvalues.add (новый BarEntry (i, Float.parseFloat (mYAxisNames.get (i))));
}
BarDataSet dataSet = новый BarDataSet (yvalues, "");
dataSet.setColors (Utils.getBarChartColors ());
dataSet.setValueFormatter (новый MyvalueFormatter ());
BarData data = new BarData(dataSet);
data.setValueTextSize(10f);
data.setBarWidth(0.9f);
data.setValueTextColor(Color.DKGRAY);
float minValue = data.getYMin();
float maxValue = data.getYMax();
//Initial values for Y axis
int yMax = (int) maxValue + 1;
int yMin = (int) minValue - 1;
XAxis xAxis = mBinding.barChart.getXAxis();
xAxis.setGranularity(1f);
xAxis.setDrawGridLines(false);
xAxis.setDrawAxisLine(true);
xAxis.setDrawLabels(true);
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setValueFormatter(new MyAxisValueFormatter(mXAxisNames));
// ось Y
mBinding.barChart.getAxisRight (). setEnabled (ложь);
mBinding.barChart.getAxisLeft (). setEnabled (истина);
YAxis leftAxis = mBinding.barChart.getAxisLeft ();
leftAxis.setValueFormatter (новый MyYAxisValueFormatter ());
leftAxis.setDrawGridLines (истина);
leftAxis.setDrawLabels (истина);
leftAxis.setSpaceTop (10f);
leftAxis.setAxisMinimum (0f);
leftAxis.setAxisMaximum (yMax);
leftAxis.setLabelCount ((целое число), истина);
// Default value
mBinding.barChart.setDrawBarShadow(false);
mBinding.barChart.setTouchEnabled(false);
mBinding.barChart.setDrawValueAboveBar(true);
mBinding.barChart.setPinchZoom(false);
mBinding.barChart.setScaleEnabled(false);
mBinding.barChart.setDescription(null);
mBinding.barChart.setVerticalScrollBarEnabled(false);
mBinding.barChart.setHorizontalScrollBarEnabled(false);
mBinding.barChart.setDrawGridBackground(false);
mBinding.barChart.setDoubleTapToZoomEnabled(false);
mBinding.barChart.setData(data);
mBinding.barChart.setFitBars(true);
mBinding.barChart.setAutoScaleMinMaxEnabled(true);
mBinding.barChart.animateXY(1000, 1000);
mBinding.barChart.invalidate();
[}`]
Самый полезный комментарий
Извините, репозиторий перепутал :-)
Эта функция скоро будет доступна :-)