当我尝试使用一组新数据更新数据时,图表显示新数据和旧数据的串联,而不是显示新数据。我尝试拨打clear
和clearValues
以及notifyDataSetChanged
例如,如果我重复使用相同的数据调用我的更新函数,我会得到以下效果:
从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];
答案 0 :(得分:0)
如何更新数据或数据集?很明显,旧数据不会被删除,而是附加新数据。
有3个级别的数据条目,数据集和数据。如果您不想要旧数据,请先致电removeDataSet
/ removeEntry
,然后按addEntry
/ addEntryOrdered
/ addDataSet
添加新数据。
如果您不想这样,您可以轻松组装新的chartData并直接将其分配给chartView.data。您不必手动调用chartView.notifyDataSetChanged()
,因为数据的设置者会调用它。但是如果你只是添加/删除数据条目或集合,你应该调用它。
答案 1 :(得分:0)
请尝试 notMerge=true 选项
myChart.setOption(option,true)