首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在一定范围内查找舍入间隔

在一定范围内查找舍入间隔
EN

Stack Overflow用户
提问于 2018-06-05 05:25:21
回答 1查看 123关注 0票数 2

绘图程序,如matplotlib,查找曲线图轴的n舍入间隔。例如,如果x在0.05 - 0.9的范围内,则轴上的舍入数字为0, 0.2, 0.4, 0.6, 0.8, 1.0

我的问题是:这种算法的逻辑是什么(我不需要代码,它可以是任何编程语言)?

我们有一个范围,当我们不知道舍入的精度或n个间隔是否可以提供舍入值时,需要找到n个舍入间隔。

我的想法:

  1. 在该范围上下的x% (绘图的可接受填充)内查找间隔舍入值。
  2. 设置n (介于4-8之间),使其具有最小和最大值之间的舍入间隔。

如果这是一种实用的方法,我仍然不知道如何管理这两个步骤的算法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 07:08:34

如果对tickers通常是如何工作的感兴趣,您可以查看http://vis.stanford.edu/papers/tick-labels和其中的引用。该算法的一个实现是可用的here

Matplotlib使用了一种略微不同的方式,当然可以直接从matplotlib source code中的MaxNLocator获取。

您可以将这个matplotlib定位器用于任何您喜欢的目的(或者自己重新实现相应的部分)。

代码语言:javascript
运行
复制
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 ]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50688992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档