如何在条形图数据上设置x轴 – ios-charts?
以前我们可以设置条形图数据的X轴如下:
BarChartData *data = [[BarChartData alloc] initWithXVals:xvals dataSets:dataSets];
在最新更新的ios-charts
库中,语法改为: BarChartData *data = [[BarChartData alloc] initWithDataSets:dataSets];
如何在BarChartData
上设置x轴?
在这个Answer(swift version)的帮助下,我能够在Objective-C
条形图上显示xAxisstring值。
NSMutableArray *xValsDietArray;
设置您的图表数据。 基本的例子如下:
for (int i=0; i<dietArray.count; i++) { DietInput *obj = [dietArray objectAtIndex:i]; NSString *dateStr = @"Jan"; [xValsDietArray addObject:dateStr];//Maintain this xValsDietArray. It will be used later on while setting x values. This contains array of x-axis values [yvals addObject:[[BarChartDataEntry alloc]initWithX:[[xValsDietArray objectAtIndex:i] doubleValue] y:obj.calorieInput.doubleValue data:xValsDietArray] ]; } BarChartDataSet *set1 = [[BarChartDataSet alloc] initWithValues:yvals label:@"Water Consumed"]; NSMutableArray *dataSets = [[NSMutableArray alloc] init]; [dataSets addObject:set1]; BarChartData *data = [[BarChartData alloc] initWithDataSets:dataSets]; cell.chartView.data=data; cell.chartView.xAxis.valueFormatter = self;// Set the delegate to self. THIS IS THE MAIN ADDITION IN NEW CHART LIBRARY
按如下方式实现stringForValue
委托方法:
- (NSString * _Nonnull)stringForValue:(double)value axis:(ChartAxisBase * _Nullable)axis { NSString *xAxisStringValue = @""; int myInt = (int)value; if(xValsDietArray.count > myInt) xAxisStringValue = [xValsDietArray objectAtIndex:myInt]; return xAxisStringValue; }
您可以使用下面的IAxisValueFormatter
相同方法, IAxisValueFormatter
值作为索引,并从xArray获取数据,并在其中显示您的自定义X values
。
#pragma mark - IAxisValueFormatter - (NSString *)stringForValue:(double)value axis:(ChartAxisBase *)axis { NSString *xValue = [xArray objectAtIndex:value]; return xValue; }
您可以将其用作IAxisValueFormatter
委托方法。
希望这可以帮助你在你的图表中设置xAxis。