2016-04-08 2 views
1

Ich benutze IOS Charts, um ein horizontales Balkendiagramm mit 2 y-Werten zu zeichnen. Ich habe eine Anforderung, '%' Symbol zu beiden y-Werten neben den Balken und sogar auf der Y-Achse (RightAxis) hinzuzufügen. Wie geht das ? Hier ist mein Graphenbild [Horizontales Balkendiagramm, das ich gezeichnet habe] [1] Und ich zeichne dieses Diagramm unter Verwendung von Ziel-C, aber unter Verwendung des Swift-Frameworks. Hier ist der Link für die Charts Ich verwende https://github.com/danielgindi/ChartsWie fügt man% zu Y-Achsenwerten/Beschriftungen in ios-Diagrammen hinzu?

ich diese unteren Zeilen zu meinem Code hinzugefügt, wie creativ beraten

NSNumberFormatter *formater = [[NSNumberFormatter alloc] init]; 
formater.numberStyle = NSNumberFormatterPercentStyle; 

_graphContainerView.rightAxis.valueFormatter = formater; 

Aber das Problem ist, ich bin immer Werte neben jedem Balken als Dezimalstellen wie in Bild unten gezeigt, aber ich möchte, dass sie auch in Prozentwerte hier ist mein Code

- (void) setDataForXAxis: (NSMutableArray *) xVals benchMarkValues: (NSMutableArray *) benchMarkVals percentageValues: (NSMutableArray *) percentVals This image is after adding the below code {

NSMutableArray *yVals1 = [[NSMutableArray alloc] init]; 
NSMutableArray *yVals2 = [[NSMutableArray alloc] init]; 

for (int i = 0; i < xVals.count; i++) 
{ 
    NSNumber *val = [benchMarkVals objectAtIndex:i]; 
    [yVals1 addObject:[[BarChartDataEntry alloc] initWithValue:val.doubleValue/100 xIndex:i]]; 

    val = [percentVals objectAtIndex:i]; 
    [yVals2 addObject:[[BarChartDataEntry alloc] initWithValue:val.doubleValue/100 xIndex:i]]; 
} 

BarChartDataSet *set1 = [[BarChartDataSet alloc] initWithYVals:yVals1 label:@"Sectoral \nBreakdown(Benchmark)"]; 
[set1 setColor:[UIColor colorWithRed:236/255.f green:205/255.f blue:118/255.f alpha:1.f]]; 
BarChartDataSet *set2 = [[BarChartDataSet alloc] initWithYVals:yVals2 label:@"Sectoral \nBreakdown(%)"]; 
[set2 setColor:[UIColor colorWithRed:31/255.f green:125/255.f blue:184/255.f alpha:1.f]]; 
set2.barSpace = set1.barSpace = 0; 

NSMutableArray *dataSets = [[NSMutableArray alloc] init]; 
[dataSets addObject:set1]; 
[dataSets addObject:set2]; 

BarChartData *data = [[BarChartData alloc] initWithXVals:xVals dataSets:dataSets]; 
data.groupSpace = 1.1; 
[data setValueFont:[UIFont fontWithName:kUTLightFontName size:6.f]]; 
_graphContainerView.data = data; 

}

Antwort

2

Sie können die valueFormatter der y-Achse ändern das Symbol% ​​enthalten. Zum Beispiel Setzen Sie den WertFormatter auf einen benutzerdefinierten NSNumberFormatter und legen Sie den NumberStyle auf NSNumberFormatterPercentStyle fest.

Beachten Sie, dass Sie Ihre Werte möglicherweise auf einen Wert zwischen 0-1 statt 0-100 ändern müssen. Ich kann es momentan nicht testen, aber ich denke, du könntest auch den Multiplikator von valueFormatter auf 1 setzen und es sollte mit Werten zwischen 0-100 funktionieren.

Um den Formatierer für die einzelnen Balken zu ändern, müssen Sie den WertFormatter des DataSet ändern.

+0

Vielen Dank, es funktioniert. Aber das Problem ist, dass ich den% -Wert für die Werte zeigen muss, die ich auf der rechten Seite der Leiste zeige. Ich habe diesen Formatierer verwendet und Werte wie diesen übergeben NSNumberFormatter * formater = [[NSNumberFormatter alloc] init]; formater.numberStyle = NSNumberFormatterPercentStyle; _graphContainerView.rightAxis.valueFormatter = Formatierer; –

+0

Sir ich änderte meine Frage und fügte mein Ergebnis hinzu. Also bitte lassen Sie mich wissen, wie Sie dieses Problem behandeln –

+0

Noch kann es nicht testen, aber es sollte wahrscheinlich funktionieren, wenn Sie die ValueFormatter des DataSet (in Ihrem Fall set1 und set2) auch ändern. – creativ

Verwandte Themen