0

我得到了一个显示每月平均记录重量的散点图。我不知道这是否可能,但我想在放大时将其转换为基于日的图表,并在缩小时转换回月度图表。

我尝试使用

-(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;
}
4

1 回答 1

0

您需要做的不仅仅是更改绘图范围(这就是-scaleBy:aboutPoint:所做的)以从汇总数据更改为详细数据。您还需要为绘图提供新数据 ( -reloadData) 并更新轴标签以指示新比例。

如果您需要更改状态以响应用户操作,例如,当用户放大某个点时,请使用委托监控绘图空间范围的更改,并在数据和标签超过更改阈值时更新它们。

于 2013-11-08T13:11:57.517 回答