IOS-Charts在我尝试替换数据集时不删除旧的数据集值

时间:2016-02-03 22:51:10

标签: ios objective-c ios-charts

当我尝试使用一组新数据更新数据时,图表显示新数据和旧数据的串联,而不是显示新数据。我尝试拨打clearclearValues以及notifyDataSetChanged 例如,如果我重复使用相同的数据调用我的更新函数,我会得到以下效果:

之前的 enter image description here

enter image description here

从NSlogs中,我看到valueCount属性每次都增加n个值(n是原始点数),但dataSets的数量始终为1.

以下是我为BarChart设置数据的方法

 NSMutableArray *yVals = [[NSMutableArray alloc] init];
 NSMutableArray *xVals = [[NSMutableArray alloc] init];

    for (int i = 0; i < [data count]; i++)
    {
        NSDictionary *d = data[i];
        NSString *name = [d objectForKey:@"label"];
        int val = [[d objectForKey:@"num"] intValue];

        [yVals addObject:[[BarChartDataEntry alloc] initWithValue:val xIndex:i]];
        [xVals addObject:name];

    }

    BarChartDataSet *set1 = [[BarChartDataSet alloc] initWithYVals:yVals label:@"Occurences"];
    set1.colors = ChartColorTemplates.colorful;
    set1.drawValuesEnabled = YES;

    NSMutableArray *dataSets = [[NSMutableArray alloc] init];
    [dataSets addObject:set1];
    BarChartData *bdata = [[BarChartData alloc] initWithXVals:xVals dataSets:dataSets];
    [bdata setValueFont:[UIFont fontWithName:@"HelveticaNeue-Light" size:10.f]];
    [_occuranceChart clear];
    [_occuranceChart clearValues];
    _occuranceChart.data = bdata;
    [_occuranceChart notifyDataSetChanged];

2 个答案:

答案 0 :(得分:0)

如何更新数据或数据集?很明显,旧数据不会被删除,而是附加新数据。

有3个级别的数据条目,数据集和数据。如果您不想要旧数据,请先致电removeDataSet / removeEntry,然后按addEntry / addEntryOrdered / addDataSet添加新数据。

如果您不想这样,您可以轻松组装新的chartData并直接将其分配给chartView.data。您不必手动调用chartView.notifyDataSetChanged(),因为数据的设置者会调用它。但是如果你只是添加/删除数据条目或集合,你应该调用它。

答案 1 :(得分:0)

请尝试 notMerge=true 选项

myChart.setOption(option,true)