【发布时间】:2015-12-01 02:07:25
【问题描述】:
我有一个二维数组,它将每个点的属性值存储为其元素:f(x,y) = f[x][y]。现在我想找到这个数组的梯度。我查看了np.gradient,但它只给出了两个数组作为返回,第一个是 x 方向的导数,第二个是 y 方向的导数。
我想了解如何使用此方法或任何其他方式创建显示二维数组渐变变化的渐变图。varray 是我要创建渐变图的二维数组。以下是我现在唯一能想到的。我知道应该有聪明的方法来使用np.gradient() 生成的x gradient 和y gradient,但我想不出。
lx 和 ly 是二维数组的 x 和 y 维度。
vgrad = np.gradient(varray)
xgrad = vgrad[0]
x, y = range(0, lx), range(0,ly)
xi, yi = np.meshgrid(x, y)
rbf = scipy.interpolate.Rbf(xi, yi, xgrad)
plt.imshow(v, vmin = np.amin(xgrad), vmax=np.amax(xgrad))
plt.colorbar()
plt.show()
我想从第一张图片中获取第二张图片。第二张图片被描述为σ = \alpha*grad(varray)。
使用下面@Mad Physicist 建议的梯度幅度。
vgrad = np.gradient(varray)
fulgrad = np.sqrt(vgrad[0]**2 + vgrad[1]**2)
plt.imshow(fulgrad,cmap=plt.get_cmap('hot'), vmin = np.amin(fulgrad),vmax = np.amax(fulgrad))
plt.colorbar()
plt.show()
我从对等式的基本理解中解释了这个错误?
所以这是我的图像。左侧:初始 2D 地图的图像。右侧:渐变图的图像。 @Mad Physicist 你认为它们和上面的相似,只是颜色不同吗?
【问题讨论】:
-
您能否向我们展示您希望使用数据创建的绘图类型的示例?例如,你想要一个流图吗? matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.streamplot
-
您只需要使用不同的颜色图。你得到的图像很好。选择确切的颜色图可能有点困难。原始预期图像是如何生成的?
-
嘿@ballsatballsdotballs,我从情节中添加了我想要的东西。初始情节和之后情节。
-
@MadPhysicist 是真的吗?等等,我可能需要更改一些参数才能获得类似的结果。将在我之前和之后的图像中立即回来。你能给我推荐一张颜色图,让它尽可能接近吗?
-
这里是对已知 plt 颜色图的引用:matplotlib.org/examples/color/colormaps_reference.html。我认为你最好的选择是
Jet。