Комментарии в коде включают предложенное исправление с использованием ограничений np.linespace. Это не решает проблему, несмотря на следующий ответ на вопрос «contourf () отображает пробелы над конечными данными»: если вы хотите убедиться, что все данные включены, вы можете определить свои собственные уровни для использования
plt.contourf (x, y, Z, np.linspace (Z.min (), Z.max (), 100))
Предполагалось, что предоставленное решение сработало, а затем не было найдено в предыдущем посте. Было сделано заявление, что проблема не видна или не повторяется, поэтому ответ так и не был дан. Код здесь воспроизводит проблему на платформах pi и win7 и является повторяемым. Области с нежелательным пустым пространством, кажется, ассоциируются с параллельными контурными линиями, которые не зацикливаются на изображении. Обратите внимание на комментарии в коде, где xc может быть изменен для изменения формы данных.
import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata
fig = plt.figure(figsize=(16,12)) #fill the screen
fig.canvas.set_window_title('<Test>')
ax = fig.gca() # to work in 2d contour
x=[ 274.0, 3174.6, 6075.2, 8975.8, 11876.4, 14777.0, 14777.0 , 11876.4, 8975.8,
6075.2, 3174.6, 274.0, 274.0, 3174.6, 6075.2, 8975.8, 11876.4, 14777.0,
14777.0, 11876.4, 8975.8, 6075.2, 3174.6, 274.0, 274.0, 3174.6, 6075.2,
8975.8, 11876.4, 14777.0, 14777.0, 11876.4, 8975.8, 6075.2, 3174.6, 274.0 ]
y=[ 6737.2, 6737.2, 6737.2, 6737.2, 6737.2, 6737.2, 9907.4, 9907.4, 9907.4,
9907.4, 9907.4, 9907.4, 13077.6, 13077.6,13077.6, 13077.6, 13077.6, 13077.6,
16247.6, 16247.6, 16247.6, 16247.6, 16247.6, 16247.6, 19418.0, 19418.0, 19418.0,
19418.0, 19418.0, 19418.0, 22588.2, 22588.2, 22588.2, 22588.2, 22588.2, 22588.2]
z=[154.11000061, 142.88999939, 137.19000244, 137.5, 143.42999268,
155.47000122, 140.53999329, 126.16000366, 118.51999664, 118.43000031,
125.22000122, 138.96000671, 131.03999329, 116.23999786, 108.23999786,
108.90000153, 116.66999817, 132.6000061, 132.75999451, 117.56999969,
111.65000153, 109.80000305, 117.29000092, 132.11000061, 141.44000244,
127.08000183, 120.48000336, 120.58999634, 127.70999908, 141.05999756,
156.22999573, 145.16000366, 139.33999634, 139.27999878, 145.63000488,
157.00999451]
print(z)
xmax=(np.amax(x))
xmin=(np.amin(x))
ymax=(np.amax(y))
ymin=(np.amin(y))
zmax=(np.amax(z))
zmin=(np.amin(z))
xc=1 #change this from -40 to 1 to 40
yc=xc
Zheight=zmin
if xc==0:
xc=.001
if yc==0:
yc=.001
xcurv=int(1000000/xc)
ycurv=int(1000000/yc)
z_surf = ((((x-(xmax+xmin)/2)/10)*((x-(xmax+xmin)/2)/10))/-xcurv + (((y-(ymax+ymin)/2)/10*(y-(ymax+ymin)/2)/10))/-ycurv ) +Zheight
zcorr=z-z_surf
zcorrmin=(np.amin(zcorr))
zcorrmax=(np.amax(zcorr))
X,Y= np.meshgrid(x,y)
Z = griddata((x, y), zcorr, (X, Y),method='nearest')
print("Zmin=",zmin,"Zmax=",zmax)
print("Zcorrmin=",zcorrmin,"Zcorrmax=",zcorrmax)
#im=ax.contourf(X, Y, Z, 15, alpha=.75, cmap = 'rainbow') #white areas in contour map
im=ax.contourf(X, Y, Z, np.linspace(Z.min(), Z.max(), 15), alpha=.75, cmap = 'rainbow') #supposed to fix white space but doesn't (3d surface and wireframe work fine with this data)
C = plt.contour(X, Y, Z, 15, colors='black')
plt.clabel(C, inline=1, fontsize=10)
v = np.linspace(zcorrmin, zcorrmax, 15, endpoint=True)
fig.colorbar(im,ax=ax,ticks=v)
plt.xticks(())
plt.yticks(())
plt.show()