我需要一种合理的智能算法来为图形(图表)提供“不错”的网格线。
例如,假设条形图的值分别为10、30、72和60。您知道:
最小值:10最大值:72范围:62
第一个问题是:您从什么开始?在这种情况下,0是直观的值,但这在其他数据集上不成立,因此我猜测:
网格最小值应为0或比范围内数据的最小值低的“ nice”值。或者,可以指定它。
网格最大值应该是该范围内的最大值之上的“ nice”值。或者,可以指定它(例如,如果要显示百分比,则可能需要0到100,而不考虑实际值)。
应该指定该范围内的网格线(刻度)的数量,或者指定给定范围内的网格线的数量(例如3-8),以使这些值为“ nice”(即,整数),并最大限度地利用图表区域。在我们的示例中,80是一个明智的最大值,因为它将使用图表高度的90%(72/80),而100将创建更多的浪费空间。
有人知道一个好的算法吗?语言无关紧要,因为我将按需要实现语言。
CPAN 在此处提供了一个实现(请参见源链接)
仅供参考,并附上您的示例数据: