所以我的问题很简单。我试图将我的图表从条形图切换到折线图,但我的折线图不显示/绘图。我在CPTBarPlot'条形图'中使用了类似的代码,这个图正确显示。
我正确绘制的条形图代码是:
CPTBarPlot *barPlot = nil;
barPlot = [CPTBarPlot tubularBarPlotWithColor:[CPTColor colorWithComponentRed:0.9294f green:0.3960f blue:0.5921f alpha:1.0f] horizontalBars:NO];
barPlot.fill = [CPTFill fillWithColor:[CPTColor colorWithComponentRed:0.9294f green:0.3960f blue:0.5921f alpha:1.0f]];
barPlot.opacity = 0.8f;
barPlot.dataSource = self;
barPlot.delegate = self;
barPlot.baseValue = CPTDecimalFromString(@"0");
barPlot.barOffset = CPTDecimalFromFloat(0.50f);
switch (graphType) {
case kWeightThreeMonth:
{
barPlot.identifier = [GraphsViewController threeMonthBarPlotIdentifier];
}
break;
case kWeightSixMonth:
{
barPlot.identifier = [GraphsViewController sixMonthBarPlotIdentifier];
}
break;
case kWeightNineMonth:
{
barPlot.identifier = [GraphsViewController nineMonthBarPlotIdentifier];
}
break;
default:
break;
}
barPlot.barCornerRadius = 2.0f;
barPlot.lineStyle = nil;
[lineGraph addPlot:barPlot toPlotSpace:plotSpace];
我的线图代码未显示为:
// Create a blue plot area
CPTScatterPlot *boundLinePlot = [[[CPTScatterPlot alloc] init] autorelease];
CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle];
lineStyle.miterLimit = 1.0f;
lineStyle.lineWidth = 3.0f;
lineStyle.lineColor = [CPTColor redColor];
boundLinePlot.dataLineStyle = lineStyle;
switch (graphType) {
case kWeightThreeMonth:
{
boundLinePlot.identifier = [GraphsViewController threeMonthBarPlotIdentifier];
}
break;
case kWeightSixMonth:
{
boundLinePlot.identifier = [GraphsViewController sixMonthBarPlotIdentifier];
}
break;
case kWeightNineMonth:
{
boundLinePlot.identifier = [GraphsViewController nineMonthBarPlotIdentifier];
}
break;
default:
break;
}
boundLinePlot.dataSource = self;
boundLinePlot.delegate = self;
[lineGraph addPlot:boundLinePlot toPlotSpace:plotSpace];
// Do a blue gradient
CPTColor *areaColor1 = [CPTColor colorWithComponentRed:0.3 green:0.3 blue:1.0 alpha:0.8];
CPTGradient *areaGradient1 = [CPTGradient gradientWithBeginningColor:areaColor1 endingColor:[CPTColor clearColor]];
areaGradient1.angle = -90.0f;
CPTFill *areaGradientFill = [CPTFill fillWithGradient:areaGradient1];
boundLinePlot.areaFill = areaGradientFill;
boundLinePlot.areaBaseValue = [[NSDecimalNumber zero] decimalValue];
// Add plot symbols
CPTMutableLineStyle *symbolLineStyle = [CPTMutableLineStyle lineStyle];
symbolLineStyle.lineColor = [CPTColor blackColor];
CPTPlotSymbol *plotSymbol = [CPTPlotSymbol ellipsePlotSymbol];
plotSymbol.fill = [CPTFill fillWithColor:[CPTColor blueColor]];
plotSymbol.lineStyle = symbolLineStyle;
plotSymbol.size = CGSizeMake(10.0, 10.0);
boundLinePlot.plotSymbol = plotSymbol;
我在这里遗漏了什么吗?考虑到Bar Plot正常工作,我认为数据源等都会以相同的方式工作。我只想尝试从条形图切换到折线图。
非常感谢任何帮助。
亲切的问候, 丹
答案 0 :(得分:1)
您可能需要重新加载地块的数据。试着这样做:
[lineGraph reloadData]
答案 1 :(得分:1)
这实际上是我自己的错。
在dataSource方法中;
-(NSUInteger)numberOfRecordsForPlot:(CPTPlot *)plot
-(NSNumber *)numberForPlot:(CPTPlot *)plot field:(NSUInteger)fieldEnum recordIndex:(NSUInteger)index
我正在做一个if语句;
if ( [plot isKindOfClass:[CPTBarPlot class]] ){
当然我使用的是CPTScatterPlot,因此我的代码没有被调用。卫生署。