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{
....
}