我正在使用IOS图表绘制带有2个y值的水平条形图,我要求在条形图旁边甚至在Y轴(RightAxis)上显示的y值中都添加'%'符号去做 ?这是我的图形图像[我绘制的水平条形图] [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 percentValues:(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;
}
最佳答案
您可以更改y轴的valueFormatter以包括%符号。
例如。将valueFormatter设置为自定义NSNumberFormatter,并将numberStyle设置为NSNumberFormatterPercentStyle。
请注意,您可能必须将值更改为0-1而不是0-100之间的值。我目前无法对其进行测试,但是我认为您也可以将valueFormatter的乘数设置为1,并且该值应与0-100之间的值一起使用。
为了更改各个小节的格式化程序,您需要更改数据集的valueFormatter。