0

coreplot を使用して棒グラフを表示しています。

このようにlabelFormatterを使用しているX軸に日付を表​​示したい

    NSDate *refDate = [NSDate date];
    NSTimeInterval oneHour =  60*60;

    CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *) self.hostView.hostedGraph.defaultPlotSpace;
    plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(xMin) length:CPTDecimalFromFloat(oneHour*24.0f)];
    plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat(yMin) length:CPTDecimalFromFloat(yMax)];

    CPTXYAxisSet *axisSet = (CPTXYAxisSet *)barChart.axisSet;

    CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle];
    lineStyle.lineColor=[CPTColor grayColor];
    CPTXYAxis *x          = axisSet.xAxis;
    x.axisLineStyle               = lineStyle;
    x.majorTickLineStyle          = lineStyle;
    x.minorTickLineStyle          = lineStyle;
    x.minorTickLength = 1.0f;
    x.majorIntervalLength         = CPTDecimalFromFloat(oneHour*2);
    x.orthogonalCoordinateDecimal = CPTDecimalFromString(@"0");
    x.title                       = @"Hour";
    x.titleLocation               = CPTDecimalFromFloat(12.0f);
    x.titleOffset                 = 33.0f;
//    x.labelRotation  = M_PI / 4;
    // added for date
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"HH"];
    CPTTimeFormatter *timeFormatter = [[CPTTimeFormatter alloc] initWithDateFormatter:dateFormatter] ;
    timeFormatter.referenceDate = refDate;
    x.labelFormatter = timeFormatter;

今まではすべて正常に動作し、Coreplot データ ソース メソッドは正しく呼び出され、データを返します。X 軸のラベルが正しく表示されます。

しかし問題は、バーが 1 つだけ表示されていることです。私の推測では、すべてのバーが表示されていますが、それらは互いに重なっています。

#pragma mark -
#pragma mark Plot Data Source Methods

-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
{

        return 24;

}

-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index{
....
}
4

1 に答える 1