def extend_limits(values, fraction=0.10, tolerance=1e-2):
""" Extend the values of a list by a fractional amount """
values = np.array(values)
finite_indices = np.isfinite(values)
if np.sum(finite_indices) == 0:
raise ValueError("no finite values provided")
lower_limit, upper_limit = np.min(values[finite_indices]), np.max(values[finite_indices])
ptp_value = np.ptp([lower_limit, upper_limit])
new_limits = lower_limit - fraction * ptp_value, ptp_value * fraction + upper_limit
if np.abs(new_limits[0] - new_limits[1]) < tolerance:
if np.abs(new_limits[0]) < tolerance:
# Arbitrary limits, since we"ve just been passed zeros
offset = 1
else:
offset = np.abs(new_limits[0]) * fraction
new_limits = new_limits[0] - offset, offset + new_limits[0]
return np.array(new_limits)
评论列表
文章目录