Estoy usando CorePlot para graficar un conjunto de datos. Los datos para mi eje x constan de fechas, mientras que los datos para mi eje y consisten en flotantes (que luego se convierten en NSNumber). Estoy obteniendo datos de un feed, y el feed devuelve números con un gran número de decimales, por ejemplo: 0.46673718852844, 4.59392222219, 353.1293012045. estoy usando el siguiente fragmento de código para formatear adecuadamente eje y:iPhone CorePlot formateo adecuado del eje 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;
En la mayoría de los casos, todo funciona bien. Sin embargo, algunas veces muestra el mismo valor en múltiples posiciones a lo largo del eje. Ver la imagen a continuación:
Los valores se presentan correctamente, me gustaría evitar (0.466) etiquetas innecesarias. Incluso he intentado para redondear los números a 3 decimales en numberForPlot
método:
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];
}
pero no hay diferencia en las etiquetas.
el problema es que este no es el único gráfico en mi aplicación, y 5 ticks generalmente se ven mejor. lo mismo con los dígitos: tres es suficiente, no es necesario mostrar 4 dígitos. ah, supongo que tendré que hacer una configuración manual del gráfico. gracias de todos modos – Maggie
Mi solución fue cambiar dinámicamente el número de ticks dependiendo del rango del eje. – Jackson