如何在条形图数据上设置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。