ios - big - ionic p
Cambiar etiquetas de tick para Graph Graph Core (2)
La política de etiquetado .LocationsProvided
usa la labelFormatter
para crear etiquetas de las ubicaciones de ticks automáticamente. Si desea usar etiquetas personalizadas, use la política de etiquetado .None
.
Estoy usando coreplot
para gráficos en mi aplicación mac y está funcionando bien. Tengo un requisito para mostrar custom labels
largo del eje para tics como:
Tengo un gráfico de valores de potencia en función del tiempo: Power values -> Y-Axis
Y Time -> X-Axis
I want to draw graph for Time seconds values but show fixed intervals ticks of minutes along x-axis for which i figured that i should use custom labels but its not happening for me.
El código para etiquetas personalizadas es:
let graph = CPTXYGraph()
plots[0].identifier = PlotType.target.rawValue
plots[1].identifier = PlotType.user.rawValue
for plot in plots {
plot.dataSource = self
plot.delegate = self
graph.addPlot(plot)
}
if let plotArea = graph.plotAreaFrame {
plotArea.borderLineStyle = nil
plotArea.paddingLeft = 25.0
plotArea.paddingBottom = 20.0
plotArea.paddingRight = 10.0
plotArea.paddingTop = 20.0
}
guard let axisSet = graph.axisSet else { return }
let xAxis = axisSet.axes?[0]
var xLabels = [CPTAxisLabel]()
var xLocations = [NSNumber]()
let doubleSecs = Double(activity.durationSeconds)
let labels = [0.0, doubleSecs * 0.25, doubleSecs * 0.50, doubleSecs * 0.75, doubleSecs]
for label in labels {
let xLabel = CPTAxisLabel(text: "/(label/60)", textStyle: axisTextStyle)
xLabel.tickLocation = NSNumber(double: label)
xLocations.append(NSNumber(double: label))
xLabels.append(xLabel)
}
xAxis?.labelingPolicy = CPTAxisLabelingPolicy.LocationsProvided
xAxis?.labelFormatter = axisFormatter
xAxis?.axisLabels = Set(xLabels)
xAxis?.majorTickLocations = Set(xLocations)
chartView.hostedGraph = graph
Con el código anterior está dibujando un gráfico ya lo largo del eje X está dividiendo el tiempo en 4 porciones iguales y mostrando las etiquetas, todo está bien.
I want to show labels along x-axis as minutes and remaining drawing is ok.
Intenté con esto:
let xLabel = CPTAxisLabel(text: "/(label/60)", textStyle: axisTextStyle())
pero las etiquetas no cambian sin efecto.También intenté cambiar
tickLocation
como:xLabel.tickLocation = NSNumber(double: label/60)
Sin efectoCon el cambio de
majorTickLocations
como:xLocations.append(NSNumber(double: label/60))
se comporta de manera extraña y todas las etiquetas del eje x están en mal estado.
Intenté seguir este ejemplo: StackOverFlow Post
¿Alguien puede guiar lo que va mal [Recuerde que estoy usando Swift]?
Lo resolví yo mismo haciéndolo así:
let xAxis = axisSet.axes?[0]
xAxis?.majorIntervalLength = activity.durationSeconds / 60 / 4
xAxis?.labelingPolicy = CPTAxisLabelingPolicy.FixedInterval
Ahora las etiquetas están llegando según sea necesario.