我正在用Python复制一些R代码。
我绊倒了R的pretty()
。
我需要的只是pretty(x)
,其中x
是一些数字。
大致而言,该函数将“断点计算”为几个“舍入”值的序列。我不确定是否有Python等价物,而且我对Google的运气不佳。
编辑:更具体地说,这是pretty
的帮助页面中的Description条目:
我查看了R的pretty.default()
,以查看R对该函数的确切作用,但最终使用了.Internal()
-通常会导致R变暗。我以为我会在潜水之前问一下。
有谁知道Python是否具有与R的pretty()
等效的东西?
最佳答案
我以为刘易斯·福格登(Lewis Fogden)发布的伪代码看起来很熟悉,我们确实曾经用C++将该伪代码编码为绘图例程(以确定漂亮的轴标签)。我很快将其翻译为Python,不确定是否与R中的pretty()
相似,但我希望它对任何人有帮助或有用。
import numpy as np
def nicenumber(x, round):
exp = np.floor(np.log10(x))
f = x / 10**exp
if round:
if f < 1.5:
nf = 1.
elif f < 3.:
nf = 2.
elif f < 7.:
nf = 5.
else:
nf = 10.
else:
if f <= 1.:
nf = 1.
elif f <= 2.:
nf = 2.
elif f <= 5.:
nf = 5.
else:
nf = 10.
return nf * 10.**exp
def pretty(low, high, n):
range = nicenumber(high - low, False)
d = nicenumber(range / (n-1), True)
miny = np.floor(low / d) * d
maxy = np.ceil (high / d) * d
return np.arange(miny, maxy+0.5*d, d)
这将产生例如:
pretty(0.5, 2.56, 10)
pretty(0.5, 25.6, 10)
pretty(0.5, 256, 10 )
pretty(0.5, 2560, 10)
关于相当于R的 `pretty()`的Python函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43075617/