我有一个工作的散点图,显示每月平均记录的权重。我不知道这是否可行,但我希望在放大时将其转换为基于日期的图表,并在缩小时将其转换为每月图表。
我尝试使用
-(void)scaleBy: (CGFloat)interactionScale aboutPoint: (CGPoint)interactionPoint
但是如果使用interactionScale
如果需要,这是数据源代码
- (NSNumber *)numberForPlot: (CPTPlot *)plot field: (NSUInteger)fieldEnum recordIndex: (NSUInteger)index {
switch (fieldEnum) {
case CPTScatterPlotFieldX:
if (index < 13) {
if (index == 0)
return nil;
//NSLog(@"x coordinate: %i",index);
return [NSNumber numberWithUnsignedInteger: index];
}
break;
case CPTScatterPlotFieldY:
if (index == 0)
return nil;
//NSLog(@"y coordinate: %i", [[weights objectAtIndex: index]integerValue]);
if ([[weights objectAtIndex: index]integerValue] <= 0)
return nil;
else return [NSNumber numberWithUnsignedInteger: [[weights objectAtIndex: index]integerValue]];
break;
}
return [NSDecimalNumber zero];
}
- (CPTLayer *)dataLabelForPlot: (CPTPlot *)plot recordIndex: (NSUInteger)idx {
CPTMutableTextStyle *axisTitleTextStyle = [CPTMutableTextStyle textStyle];
axisTitleTextStyle.fontSize = 10.0;
axisTitleTextStyle.fontName = @"Helvetica-Bold";
axisTitleTextStyle.color = [CPTColor whiteColor];
CPTTextLayer *label = [[CPTTextLayer alloc] init];
label.textStyle = axisTitleTextStyle;
label.text = [NSString stringWithFormat: @"%.2f", [[weights objectAtIndex: idx] floatValue]];
return label;
}
答案 0 :(得分:0)
您需要做的不仅仅是更改要从摘要更改为详细数据的绘图范围(这是-scaleBy:aboutPoint:
所做的)。您还需要为绘图提供新数据(-reloadData
)并更新轴标签以指示新的比例。
如果您需要更改状态以响应用户操作,例如,当用户缩放超过某个点时,请使用代理监视对绘图空间范围的更改,并在超过更改阈值时更新数据和标签。< / p>