通过在特定边界内插值不规则的x,y,z数据来创建2D色图

时间:2019-03-29 16:51:57

标签: python-2.7 matplotlib interpolation colormap color-mapping

我有三个1d数组x,y和z。 x和y描述幅度z的位置。数据间隔不规则。 我想将此数据绘制在2d色图中,并使用点值对空白空间进行插值。 Contour/imshow plot for irregular X Y Z data此处已解决此问题。

我的另一个障碍是,我希望插值仅发生在某个边界上和边界内的点上。边框具有以下T-shape

我尝试使用以下python代码对数据进行插值:

import numpy as np
import matplotlib.pyplot as plt

x_boundary = [6, 12, 12, 18, 18, 12, 6, 0, 0, 6]
y_boundary = [0, 0, 6, 6, 12, 12, 12, 12, 6, 6]
z_boundary = [4.24, 4.24, 3, 4.24, 4.24, 3, 3, 4.24, 4.24, 3]

x_surface = [7, 9, 11, 10, 11, 10, 12, 15, 17, 17, 16, 14, 11, 8, 5, 2, 1, 3, 6, 8, 8, 8, 7]
y_surface = [1, 1, 1, 3, 4, 6, 8, 7, 8, 9, 10, 11, 10, 11, 10, 11, 8, 7, 7, 8, 5, 4, 3]
z_surface = [2.83, 2, 2.83, 1, 2, 1, 1, 2, 2.23, 2, 1.4, 2, 1, 2, 1, 2.23, 2.23, 2, 2, 1, 1, 1, 2]

x = x_boundary + x_surface
y = y_boundary + y_surface
z = z_boundary + z_surface

plt.plot(x_boundary,y_boundary, 'ko')
plt.tricontourf(x,y,z, 50)
plt.colorbar()
plt.savefig('t_int.png')
plt.show()

在这里您可以看到interpolated colorplot

可以看出,例如(0,6)和(6,0)点被插值,从而在T上添加了两个三角形表面。但是我不想填充这些三角形,因为它们不在边界内。 有没有办法告诉.tricontourf不要填充某些区域? 我也对不涉及.tricontourf的解决方案持开放态度。

预先感谢

0 个答案:

没有答案