2016-04-08 61 views
1

我正在使用IOS图表来绘制水平条形图,其中有2个y值。我要求在这两个条形图上显示y值,甚至在Y轴(RightAxis)上添加'%'怎么做 ?这是我的图形图像[我绘制的水平条形图] [1]我使用Objective-C绘制该图,但使用Swift框架。下面是我使用https://github.com/danielgindi/Charts如何在ios图表中添加%到Y轴值/标签?

我加入这个底线我的代码的链接图表由CREATIV

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

_graphContainerView.rightAxis.valueFormatter = formater; 

如建议但问题是,我得到各条作为小数点旁边值如下图所示的图像,但我希望他们也以百分比值这里是我的代码

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

}

回答

2

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

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

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

+0

谢谢你的工作。但问题是我必须向该条右侧显示的值显示%值。我使用格式化程序并传递这样的值NSNumberFormatter * formater = [[NSNumberFormatter alloc] init]; formater.numberStyle = NSNumberFormatterPercentStyle; _graphContainerView.rightAxis.valueFormatter = formater; –

+0

先生,我修改了我的问题,并添加了我的结果。所以请让我知道如何处理这个问题 –

+0

仍然无法测试它,但它应该可能工作,如果你改变DataSet的valueFormatter(在你的情况下set1和set2)。 – creativ

相关问题