Я использую CorePlot для построения графика набора данных.Данные для моей оси X состоят из дат, в то время как данные для моей оси Y состоят из чисел с плавающей точкой (которые я затем превращаю в NSNumber).Я получаю данные из фида, и фид возвращает числа с большим количеством десятичных знаков, например: 0,46673718852844, 4.59392222219, 353.1293012045.Я использую следующий фрагмент кода для правильного форматирования оси Y:
NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[numberFormatter setMaximumFractionDigits:3];
[numberFormatter setPositiveFormat:@"###0.000"];
CPTXYAxis *y = axisSet.yAxis;
y.labelingPolicy = CPTAxisLabelingPolicyAutomatic;
y.minorTicksPerInterval = 1;
y.preferredNumberOfMajorTicks = 5;
y.labelFormatter = numberFormatter;
В большинстве случаев все работает нормально.Однако иногда он отображает одно и то же значение в нескольких позициях вдоль оси.См. Изображение ниже:
Значения представлены правильно, я просто хотел бы избежать ненужных (0,466) меток.Я даже пытался округлить числа до 3 десятичных знаков в методе numberForPlot
:
if(fieldEnum == CPTScatterPlotFieldY)
{
float floatNum = r.value;
floatNum *= 1000;
int intValue = (int) floatNum;
float decimal = floatNum - intValue;
if (decimal > 0.5) {
intValue++;
}
floatNum = intValue /1000.0;
return [NSNumber numberWithFloat:floatNum];
}
, но различий в метках нет.