我有一些随机放置的数据,我想强制到一个网格,并显示在一个三维表面彩色绘图。我使用scipy.interpolate.griddata网格数据(). 但是,当使用“线性”或“立方”的方法参数时,曲面仅渲染为贴图中值最低的颜色。你知道吗
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from scipy.interpolate import griddata
def rosenbrock(x, y):
# plotting test function
return 100.0 * (y - x**2)**2 + (1.0 - x)**2
def plotGrid(x, y, z, title):
# plot data as a 3D surface above a contour map
cmap = plt.get_cmap('Spectral')
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(x, y, z, cmap=cmap)
ax.contour( x, y, z, cmap=cmap, offset=0.0)
ax.set_title(title)
def main():
# generate a grid to interpolate between
gx, gy = np.mgrid[-5:5:100j, -5:5:100j]
# generate random points to mold into the desired grid
p = np.random.rand(100, 2) * 10.0 - 5.0
# find values for each random point pair
v = rosenbrock(p[:,0], p[:,1])
# interpolate the data into a grid
g0 = griddata(p, v, (gx, gy), method='nearest')
g1 = griddata(p, v, (gx, gy), method='linear')
g2 = griddata(p, v, (gx, gy), method='cubic')
# plot the data
plotGrid(gx, gy, rosenbrock(gx, gy), 'True Grid')
plotGrid(gx, gy, g0, 'Nearest')
plotGrid(gx, gy, g1, 'Linear')
plotGrid(gx, gy, g2, 'Cubic')
plt.show()
if __name__ == '__main__':
main()
上面的代码为每种栅格类型创建一个三维绘图:真、最近、线性和立方。你知道吗
在“真”和“最近”绘图中,曲面网格根据该数据的高度渲染为预期颜色。你知道吗
在“线性”和“立方”绘图中,曲面网格仅渲染为最低值颜色(对于“光谱”cmap,该颜色为洋红色)。我想这些绘图显示像前两个绘图一样的颜色范围。你知道吗
我没有足够的声誉来发布图片,但是这里有一个link to an album包含所有4个情节。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐