2017-01-27 9 views
3

は以前、私たちは以下のように棒グラフのデータのX軸を設定することができます -棒グラフデータにx軸を設定する方法 - ios-charts?

ios-chartsライブラリの更新された最新でBarChartData *data = [[BarChartData alloc] initWithXVals:xvals dataSets:dataSets];

は、構文は以下に変更: - BarChartData *data = [[BarChartData alloc] initWithDataSets:dataSets];

どのように設定しますx軸はBarChartDataにありますか?

+0

何がX軸に表示する必要があり、あなたが私に言うことができますか?あなたが達成しようとしているものをスクリーンショットで提供して、適切なアイデアを得ることができますか? – CodeChanger

+0

私は、x値が 'IAxisValueFormatter'とそのデリゲートメソッド' stringForValue'によって示されることを知りました。私のviewControllerでIAxisValueFormatterを使用しようとすると、エラーが発生します: - 'プロトコル宣言を見つけることができません。 [この回答](http://stackoverflow.com/a/39149070/988169)は、迅速に作業しながらアプローチを共有しました。客観的なcでも同じことを教えてくれますか? – pkc456

答えて

3

このAnswer (swift version)の助けを借りて、xAxisの文字列値を棒グラフでObjective-Cに表示することができます。

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; 
} 
+0

オブジェクトとして何かこれは私が疑わしいと間違っています。 – CodeChanger

+0

これは私のために働いた。ありがとうございました。 – UIResponder

1

IAxisValueFormatterと同じ方法をとして使用し、xArrayからデータをフェッチし、カスタムX valuesを表示することができます。

#pragma mark - IAxisValueFormatter 

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

IAxisValueFormatterの代理メソッドとして使用できます。

これは、あなたのチャートにxAxisを設定するのに役立ちます。

+0

私は全く同じことをしました。しかし、値はインデックスとして扱われません。 – pkc456

+0

あなたのBarChartDataEntryコードを表示して、問題を簡単に解決できますか? – CodeChanger

+0

'[[BarChartDataEntry alloc] initWithX:idx y:yValue];'これです。 – CodeChanger

関連する問題