Принудительное обновление линий сетки при изменении диапазона на диаграмме рассеяния 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;