如何在条形图数据上设置 x 轴 - ios 图表



以前我们可以设置条形图数据的x轴,如下所示:

BarChartData *data = [[BarChartData alloc] initWithXVals:xvals dataSets:dataSets];

在最新更新ios-charts库中,语法更改为以下内容:- BarChartData *data = [[BarChartData alloc] initWithDataSets:dataSets];

如何在BarChartData上设置 x 轴?

借助此答案(swift 版本),我能够在 Objective-C 的条形图上显示 xAxis 字符串值。

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方法,将作为索引,并从xArray获取数据并在其中显示您的自定义X values

#pragma mark - IAxisValueFormatter
- (NSString *)stringForValue:(double)value
                        axis:(ChartAxisBase *)axis
{
    NSString *xValue = [xArray objectAtIndex:value];
    return xValue;
}

您可以将其用作IAxisValueFormatter的委托方法。

希望这将帮助您在图表中设置 xAxis。

最新更新