绘图程序,如matplotlib,查找曲线图轴的n舍入间隔。例如,如果x在0.05 - 0.9的范围内,则轴上的舍入数字为0, 0.2, 0.4, 0.6, 0.8, 1.0。
我的问题是:这种算法的逻辑是什么(我不需要代码,它可以是任何编程语言)?
我们有一个范围,当我们不知道舍入的精度或n个间隔是否可以提供舍入值时,需要找到n个舍入间隔。
我的想法:
n (介于4-8之间),使其具有最小和最大值之间的舍入间隔。如果这是一种实用的方法,我仍然不知道如何管理这两个步骤的算法。
发布于 2018-06-05 07:08:34
如果对tickers通常是如何工作的感兴趣,您可以查看http://vis.stanford.edu/papers/tick-labels和其中的引用。该算法的一个实现是可用的here。
Matplotlib使用了一种略微不同的方式,当然可以直接从matplotlib source code中的MaxNLocator获取。
您可以将这个matplotlib定位器用于任何您喜欢的目的(或者自己重新实现相应的部分)。
import numpy as np
import matplotlib.ticker as mticker
loc = mticker.MaxNLocator(nbins=10, min_n_ticks=3)
arr = np.array([23, 21, 27])
ticks = loc.tick_values(arr.min(), arr.max())
print(ticks)
### [21. 21.6 22.2 22.8 23.4 24. 24.6 25.2 25.8 26.4 27. ]
arr = np.array([.5, .3, .9])
ticks = loc.tick_values(arr.min(), arr.max())
print(ticks)
### [0.24 0.32 0.4 0.48 0.56 0.64 0.72 0.8 0.88 0.96]
# or use less target bins:
loc2 = mticker.MaxNLocator(nbins=5, min_n_ticks=3)
arr = np.array([.5, .3, .9])
ticks = loc2.tick_values(arr.min(), arr.max())
print(ticks)
### [0.3 0.45 0.6 0.75 0.9 ]https://stackoverflow.com/questions/50688992
复制相似问题