Sto utilizzando CorePlot per rappresentare graficamente un insieme di dati. I dati per il mio asse x sono costituiti da date, mentre i dati per il mio asse y sono costituiti da float (che poi trasformo in NSNumber). Ricevo i dati da un feed e il feed restituisce numeri con un numero elevato di decimali, ad esempio: 0.46673718852844, 4.59392222219, 353.1293012045. Sto utilizzando il seguente pezzo di codice per formattare correttamente asse y:Formattazione corretta per iPhone CorePlot dell'asse 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;
Nella maggior parte dei casi, tutto funziona bene. Tuttavia, a volte visualizza lo stesso valore in più posizioni lungo l'asse. Vedi immagine qui sotto:
I valori sono presentati in modo corretto, vorrei solo evitare inutili (0,466) etichette. Ho anche cercato di arrotondare i numeri a 3 cifre decimali in numberForPlot
metodo:
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];
}
ma non v'è alcuna differenza di etichette.
il problema è che questo non è l'unico grafico nella mia applicazione, e 5 tick di solito sembrano i migliori. la stessa cosa con le cifre: tre di solito sono sufficienti, non è necessario mostrare 4 cifre. ah, credo che dovrò fare un po 'di configurazione manuale del grafico. grazie comunque – Maggie
La mia soluzione era di modificare dinamicamente il numero di tick in base alla gamma dell'asse. – Jackson