Сначала вам нужно создать сетку из ваших данных x и y:
X,Y = np.meshgrid(data[:,0], data[:,1])
Затем вы можете интерполировать сетку z:
# Choose one option
# Z = griddata((data[:,0], data[:,1]), data[:,2], (X, Y), method='nearest')
Z = griddata((data[:,0], data[:,1]), data[:,2], (X, Y), method='linear')
# Z = griddata((data[:,0], data[:,1]), data[:,2], (X, Y), method='cubic')
И нанесите данные, используя контур с указанным уровнем в 0,5:
levels = 0.5
contour(X,Y,Z,levels)
Дайте мне знать, сработал ли этот подход для вас.