我需要手动计算图表的Ticklabels和Tickrange。
我知道不错的“标准”算法(请参阅http://books.google.de/books?id=fvA7zLEFWZgC&pg=PA61&lpg=PA61&redir_esc=y#v=onepage&q&f=false),并且我也知道此Java实现。
问题在于,使用这种算法,刻度线“太聪明了”。这意味着,算法决定应显示多少滴答声。我的要求是,总是有5个刻度,但是这些刻度当然应该是“漂亮的”。天真的方法是获得最大值,除以5,再乘以滴答数。当然,这里的值不是最佳值,刻度线非常难看。
有人知道该问题的解决方案或对正式算法的描述有所提示吗?
您应该能够对Java实现进行较小的更正。
将maxticks更改为5。
将计算方法更改为此:
private void calculate() { this.range = niceNum(maxPoint - minPoint, false); this.tickSpacing = niceNum(range / (maxTicks - 1), true); this.niceMin = Math.floor(minPoint / tickSpacing) * tickSpacing; this.niceMax = this.niceMin + tickSpacing * (maxticks - 1); // Always display maxticks }
免责声明:请注意,我尚未对此进行测试,因此您可能需要对其进行调整以使其看起来不错。我建议的解决方案在图表顶部增加了额外的空间,以便始终为5个刻度线腾出空间。在某些情况下,这可能很难看。