我正在使用一些预定义的范围值设置yAxis的majorTickLocations属性。我还设置了yAxis的alternatingBandFills属性来对这些范围进行颜色编码。我使用的代码如下所示:
NSSet *majorTickLocations = [NSSet setWithObjects:
[NSDecimalNumber numberWithDouble:lowerRedRangeFrom],
[NSDecimalNumber numberWithDouble:lowerOrangeRangeFrom],
[NSDecimalNumber numberWithDouble:greenRangeFrom],
[NSDecimalNumber numberWithDouble:upperOrangeRangeFrom],
[NSDecimalNumber numberWithDouble:upperRedRangeFrom],
[NSDecimalNumber numberWithDouble:upperRedRangeTo],
nil];
yAxis.majorTickLocations = majorTickLocations;
yAxis.alternatingBandFills = [NSArray arrayWithObjects:
[CPTColor redColor],
[CPTColor orangeColor],
[CPTColor greenColor],
[CPTColor orangeColor],
[CPTColor redColor], nil];
除了一个特定问题外,一切都很好:
我使用的某些数据范围包含lowerRedRangeFrom = lowerOrangeRangeFrom。如果是这种情况会发生什么,只显示3个颜色编码的范围,这很好,这是预期的行为。由于alternatingBandFills数组按此顺序定义 - >红色,橙色,绿色,橙色,红色,显示的颜色为红橙绿色。这完全没问题。预期。
然而,在某些数据集上,其逻辑与其他数据集相同(即lowerRedRangeFrom = lowerOrangeRangeFrom),图形的alternatingBandFills显示为 - >橙,绿,橙。
有人可以解释一下为什么会这样吗?令人困惑的是,对于给定的数据集,没有问题,而对于其他数据集,则存在(尽管比例相同)。我知道Core-Plot将循环通过alternatinBandFills数组并显示颜色,但由于某种原因,它有时会在index = 1处开始循环,而不是在数组的开始处循环。
谢谢,
斯托
答案 0 :(得分:0)
这种行为是正确的。如果lowerRedRangeFrom == lowerOrangeRangeFrom
,那么第一个红色范围仍然存在,但它的高度为0。