如何在ios图表中为Y轴值/标签添加%?

时间:2016-04-08 06:39:24

标签: ios objective-c charts ios-charts

我正在使用IOS图表绘制水平条形图,有2个y值。我需要在显示在条形图旁边的y值上添加'%'符号,甚至在Y轴上(RightAxis) ) 怎么做 ?这是我的图形图像[我绘制的水平条形图] [1]我正在使用Objective-C绘制此图,但使用Swift框架。这是我正在使用的图表的链接https://github.com/danielgindi/Charts

我根据creativ

的建议将这些底线添加到我的代码中
NSNumberFormatter *formater = [[NSNumberFormatter alloc] init];
formater.numberStyle = NSNumberFormatterPercentStyle;

_graphContainerView.rightAxis.valueFormatter = formater;

但问题是我在每个条形图旁边的值都是小数点,如下图所示但我想要它们的百分比值也是我的代码

- (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;

}

1 个答案:

答案 0 :(得分:2)

您可以更改y轴的valueFormatter以包含%符号。 例如。将valueFormatter设置为自定义NSNumberFormatter并将numberStyle设置为NSNumberFormatterPercentStyle。

请注意,您可能必须将值更改为介于0-1而不是0-100之间的值。我现在无法测试它,但我认为您还可以将valueFormatter的乘数设置为1,它应该使用0到100之间的值。

要更改单个条的格式化程序,您需要更改DataSet的valueFormatter。