诸如matplotlib
之类的绘图程序,为绘图轴找到n
个圆间隔。例如,如果 x 在 0.05 - 0.9
范围内,则轴中的整数为 0, 0.2, 0.4, 0.6, 0.8, 1.0
。
我的问题是:这种算法的逻辑是什么(我不需要代码,它可以是任何编程语言)?
当我们不知道舍入精度或 n 个间隔可以给出舍入值时,我们有一个范围,并且需要在内找到 n
个舍入间隔。
我的想法:
查找范围上方和下方 x%(绘图可接受的填充)内最接近的舍入值。
设置
n
(例如 4-8 之间)以在最小值和最大值之间设置舍入间隔。
如果这是一种实用的方法,我仍然不知道如何管理任一步骤的算法。
最佳答案
如果对股票行情的一般工作方式感兴趣,您可以查看 http://vis.stanford.edu/papers/tick-labels以及其中的引用文献。 该算法的实现可用 here 。
Matplotlib 采用了稍微不同的方式,当然可以直接取自MaxNLocator
中
matplotlib source code .
您可以将此 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 ]
关于python - 查找范围内的圆间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50688992/