3

チャートのxAxisを次のようにしたいと思います:

1月、2月、3月、4月、..... 11月、12月

現在、デフォルトに従っており、データポイントの数に応じてxAxisに番号が付けられています。

この軸へのこの変更をどのように達成できますか?

カテゴリ軸を使用して、これらの文字列( "Jan"、 "Feb" ...)をカテゴリとして1から12までのnumberRangeでNSMutableArrayを設定しようとしましたが、機能しませんでした。

chart = [[ShinobiChart alloc] initWithFrame:chartEmbaixo.frame withPrimaryXAxisType:SChartAxisTypeCategory withPrimaryYAxisType:SChartAxisTypeNumber];

NSMutableArray * monthNames = [[NSMutableArray alloc] initWithObjects:@"Jan", @"Fev", @"Mar", @"Abr", @"Mai", @"Jun", @"Jul", @"Ago", @"Set", @"Out", @"Nov", @"Dez", nil];

SChartNumberRange * numberRange = [[SChartNumberRange alloc] initWithMinimum:[NSNumber numberWithInt:1]andMaximum:[NSNumber numberWithInt:12]];
SChartCategoryAxis *xAxis = [[SChartCategoryAxis alloc] initWithRange:numberRange];
xAxis.categories = monthNames;

chart.xAxis = xAxis;
4

1 に答える 1

4

最初に x 軸として使用します

x 軸の作成方法を編集します。

SChartNumberRange *r1 = [[SChartNumberRange alloc] initWithMinimum:[NSNumber numberWithInt:0] andMaximum:[NSNumber numberWithInt:2]];
SChartCategoryAxis *xAxis = [[SChartCategoryAxis alloc] initWithRange:r1];
xAxis.title = @"";
//xAxis.enableGesturePanning = YES;
xAxis.enableGesturePanning = YES;
xAxis.style.gridStripeStyle.showGridStripes = NO;
xAxis.style.majorGridLineStyle.showMajorGridLines = NO;

データ ポイントを作成するときは、x 軸ポイントとして xValue を使用する必要があります。このような:

dp.yValue = 1000;
dp.xValue = @"Jan";

xValue は、その特定のデータ ポイントの x ポイントとして設定する必要があります。これは機能するはずですが、機能しない場合、またはより複雑なことをしたい場合は、 SChartDelegateプロトコルからこのメソッドを拡張できます。

-(void)sChart:(ShinobiChart *)chart alterTickMark:(SChartTickMark *)tickMark beforeAddingToAxis:(SChartAxis *)axis

このメソッドでtickMark.tickLabelは、編集を行うことができる特定のポイントの軸ラベルがあります。どの軸にいるかを確認することを忘れないでください。

お役に立てれば。明日でなければ、私のプロジェクトからいくつかのコードを投稿できます(現在、私はどこからでもアクセスできません)

編集:現在、私はこのコードを持っています:

- (void)sChart:(ShinobiChart *)chart alterTickMark:(SChartTickMark *)tickMark beforeAddingToAxis:(SChartAxis *)axis {
    if (chart.yAxis == axis ) return;
    for (UIView *i in tickMark.tickMarkView.subviews)
        [i removeFromSuperview];

    tickMark.tickMarkView.frame = CGRectMake(0, 0, 170, 75);
    //center the marker at the right place because the size was changed
    tickMark.tickMarkX = tickMark.tickMarkX - (tickMark.tickMarkView.frame.size.width/2) ;
    tickMark.tickMarkY = 10;

    //img
    UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed: @"graph_bar_tag_2@2x.png"]];
    img.frame = CGRectMake( 0, 0, tickMark.tickMarkView.frame.size.width, tickMark.tickMarkView.frame.size.height);
    [tickMark.tickMarkView addSubview:img];

    //label with the markView's size with 7px padding on the left and on the right
    UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake( 7, 5, tickMark.tickMarkView.frame.size.width-14, 15)];
    label.backgroundColor = [UIColor clearColor];
    //tikMark.tickLabel has an pair of indexes so that i can easily find the data for this particular data point and series.
    label.text = [_dataSource getNameFor: tickMark.tickLabel.text];
    label.textAlignment = UITextAlignmentCenter;
    //color_other_light is a UIColor var
    [label setTextColor: color_other_light];

    [tickMark.tickMarkView addSubview:label];
...
}
于 2012-12-03T21:05:22.657 に答える