我正在尝试移植一个程序,该程序使用手动插值器(由数学家大学开发)来使用scipy提供的插值器.我想使用或包装scipy插值器,使其尽可能接近旧插值器的行为.
两个函数之间的关键区别在于我们的原始插值器 - 如果输入值高于或低于输入范围,我们的原始插值器将推断结果.如果你用scipy插值器尝试这个,它会引发一个ValueError.以此程序为例:
import numpy as np
from scipy import interpolate
x = np.arange(0,10)
y = np.exp(-x/3.0)
f = interpolate.interp1d(x, y)
print f(9)
print f(11) # Causes ValueError, because it's greater than max(x)
Run Code Online (Sandbox Code Playgroud)
是否有一种明智的方法可以使它不会崩溃,最后一行只是做一个线性推断,将第一个和最后两个点定义的渐变延续到无穷大.
请注意,在真实软件中我实际上并没有使用exp函数 - 这只是为了说明!
我正在绘制x,y空间中的一系列曲线,其中每条曲线由标量值z标识.我希望将z值映射到每条线的颜色,但是大多数色彩图/颜色表都是在考虑图像的情况下构建的(例如,在白色背景上,灰度色彩图隐藏了z的一个极端).
彩虹/光谱/喷射色图 - 这是许多绘图程序中的默认值 - 更好,但是白色背景上的黄色/青色线的可见性差,蓝色/青色/绿色之间的色彩对比度差.Borland和Taylor进一步讨论了彩虹色图的这个问题和其他问题:
有人能推荐更好的东西吗?我正在寻找的一些方面:
编辑/更新:每个endolith的请求,这是一个简化的示例图:
"灰色"色图和它的亲戚(从黑色开始到白色结束)是为图像设计的,但是当用于在白色背景上绘制线条或点时,有些将很难看到或看不见."jet"色图和它的光谱亲属通常也有黄色,绿色或其他颜色,很难在白色背景上看到.