Принудительное обновление линий сетки при изменении диапазона на диаграмме рассеяния Core-Plot на iOS

У меня есть CPTXYGraph с CPTScatterPlot, который я обновляю новыми данными, используя [graph reloadData]. Я также устанавливаю диапазоны на основе данных. Моя проблема в том, что, хотя оси меняются нормально при изменении диапазона, линии сетки не изменяются, поэтому я получаю этот http://inky.ws/g/hw (без линий сетки в конце оси x).

Я установил axis.gridLinesRange = nil и попытался заново установить все свойства линии сетки при обновлении диапазонов, но безрезультатно.

Чтобы уточнить, исходный график выглядит хорошо, но когда я обновляюсь с большим набором данных, линии сетки отсутствуют в добавленном диапазоне.

1 ответ

Решение

У меня была та же проблема, и я использовал следующий обходной путь: вычислите новые границы ваших значений и замените диапазон пространства печати по умолчанию на новый, используя plotRangeWithLocation:length: вспомогательный метод.

Не очень удовлетворительно с точки зрения производительности и концептуальности (похоже на выполнение работы фреймворка), но это сработало для меня.

CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)graph.defaultPlotSpace;
plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat([valuesMin floatValue]) length:CPTDecimalFromFloat([valuesMax floatValue]-[valuesMin floatValue])];


CPTXYAxisSet *axisSet = (CPTXYAxisSet *)graph.axisSet;    
CPTXYAxis *y = axisSet.yAxis;

float amplitude = ([valuesMax floatValue]-[valuesMin floatValue]);
NSDecimal intervalLength = CPTDecimalFromFloat(100);
y.majorIntervalLength = intervalLength;
Другие вопросы по тегам