Coreplot CPTAxisLabelingPolicy自动和重复标签
Coreplot CPTAxisLabelingPolicyAutomatic and repetitive labels
我正在使用 CPTAxisLabelingPolicyAutomatic,它在标记和刻度方面效果很好。我遇到的问题是当用户放大太多直到标签变得相同时。例如。在 Y 轴上我得到 0,0,0,0,1,1,1,...
为了解决这个问题,我查看了
中 YAxis 的 newRange.lengthDouble 值
-(CPTPlotRange *)plotSpace:(CPTPlotSpace *)space willChangePlotRangeTo:(CPTPlotRange*)newRange forCoordinate:(CPTCoordinate)coordinate;
并手动找出这种情况开始发生的确切位置。然后使用该值通过以下方式限制捏合:
if (coordinate == CPTCoordinateY) {
//to avoid having e.g. 3,3,3... on all ticks on Y axis
if (newRange.lengthDouble < 7){
return [(CPTXYPlotSpace*)space yRange];
}
}
这个特定值似乎取决于图表容器的大小和绘制的数字范围。你see/have这些之间有任何关联吗,这样我们就可以避免这个问题。
提前致谢。
这是一个合理的解决方案。其他替代方案包括更改标签格式化程序以显示小数点后的数字或切换到等分标签策略。
我正在使用 CPTAxisLabelingPolicyAutomatic,它在标记和刻度方面效果很好。我遇到的问题是当用户放大太多直到标签变得相同时。例如。在 Y 轴上我得到 0,0,0,0,1,1,1,...
为了解决这个问题,我查看了
中 YAxis 的 newRange.lengthDouble 值-(CPTPlotRange *)plotSpace:(CPTPlotSpace *)space willChangePlotRangeTo:(CPTPlotRange*)newRange forCoordinate:(CPTCoordinate)coordinate;
并手动找出这种情况开始发生的确切位置。然后使用该值通过以下方式限制捏合:
if (coordinate == CPTCoordinateY) {
//to avoid having e.g. 3,3,3... on all ticks on Y axis
if (newRange.lengthDouble < 7){
return [(CPTXYPlotSpace*)space yRange];
}
}
这个特定值似乎取决于图表容器的大小和绘制的数字范围。你see/have这些之间有任何关联吗,这样我们就可以避免这个问题。
提前致谢。
这是一个合理的解决方案。其他替代方案包括更改标签格式化程序以显示小数点后的数字或切换到等分标签策略。