Coreplot重新加载数据不改变颜色



我有一个能成功绘图的散点图。我有一个自定义对象的NSArray,每个对象都包含注释的名称,x值,y值,符号颜色,符号形状。当我加载图形时,它工作得很好。当我点击我使用的表格中的行时,我可以立即隐藏点并更改颜色/形状。但是,颜色不会改变,直到我改变形状。我知道重新加载数据正在被调用,我知道symbolForScatterPlot正在被调用,我也知道我正在给plotSymbol什么。fill = [CPTFill fillWithColor:[point getColor]];事实上是新的颜色,但它不会改变!

下面是代码:
else if ([self.state isEqualToString:@"settings"]) {
        if (self.current == -1) {
            // all stats
            if ([indexPath section] == 0) {
                for (int k = 0; k < 32; k ++) {
                    [[theData sharedInstance] setTheColor:tmp index:k];
                }
            } else {
                for (int k = 0; k < 32; k ++) {
                    [[theData sharedInstance] setTheShape:tmp index:k];
                }
            }
        } else {
            // individual stats
            if ([indexPath section] == 1) {
                [[theData sharedInstance] setTheShape:tmp index:self.current];
            } else {
                [[theData sharedInstance] setTheColor:tmp index:self.current];
            }
        }
    [[NSNotificationCenter defaultCenter] postNotificationName:@"updated" object:nil];
    }

导致:

-(void)performTask {
    [self.hostView.hostedGraph reloadData];
    NSLog(@"updated!");
}

和符号代码:

- (CPTPlotSymbol *)symbolForScatterPlot:(CPTScatterPlot *)plot recordIndex:(NSUInteger)index
{
    CPTPlotSymbol *plotSymbol;
    DataPoint *point = [[[theData sharedInstance] getData:@"dataPoint"] objectAtIndex:index];
    plotSymbol = [point getShape];
    plotSymbol.fill = [CPTFill fillWithColor:[CPTColor whiteColor]];
    NSLog(@"the fill color is %@", [point getColor]);
    if ([point getPointOn]) {
        float var = [[[[theData sharedInstance] getData:@"dataPoint"]objectAtIndex:index] getStats:2005];
        plotSymbol.size = CGSizeMake(var/2, var/2);
    }
    plotSymbol.fill = [CPTFill fillWithColor:[point getColor]];
    return plotSymbol;
}

我真的不知道为什么颜色不会更新。当从服务器重新下载数据并重新加载图形时,颜色也会改变,但形状不会改变。

编辑:正如你在代码中看到的,我将其设置为白色后立即形状,但它不是绘制为白色,它绘制为默认颜色,这只是让我更困惑:/

这是一个核心情节的错误。当您更改颜色时,绘图符号不会使其内部缓存失效。请在Core Plot问题跟踪器上报告。

最新更新