У меня есть набор данных, который содержит координаты x и y и вычисленное значение для каждой координаты. Сетка нерегулярна, поэтому на данный момент я создаю график рассеяния и разделяю значения на бункеры для отображения в виде контура, как на img по ссылке ниже. http://i.stack.imgur.com/m7XHm.pngКонтур Matplotlib с пустыми областями
Я хочу усовершенствовать этот метод, используя функцию imshow/contour в matplotlib, используя meshgrid, а затем интерполируя вычисленные значения. Я могу заставить это работать нормально, но в итоге у меня возникла проблема с тем, что он теряет области изображения без данных (пустоты в реальной жизни) и присоединяется к ним, как показано на изображении по ссылке ниже для тех же данных. http://i.stack.imgur.com/ZCRog.png
Я попытался найти лучший способ сделать это, но я не нашел никакой помощи в этом. У кого-нибудь есть предложения?
Я думаю, что мне нужно изменить метод на стадии meshgrid, но я не уверен в этом. За что его стоит мой код ниже
x=nodalData[:,1] #array of x values from input file
y=nodalData[:,2] #array of y values from input file
#define the linear grid
xi, yi = np.linspace(x.min(), x.max(), 100), np.linspace(y.min(), y.max(), 100)
xi, yi = np.meshgrid(xi, yi)
z=Rres #array calculated elsewhere corresponding to x,y pair
#interpolate
zi = scipy.interpolate.griddata((x, y), z, (xi, yi), method='cubic')
#plot
plt.imshow(zi, vmin=z.min(), vmax=z.max(), origin='lower', extent=[x.min(), x.max(), y.min(), y.max()])
Вы хотите ** маскировать ** некоторые регионы, правильно? проверьте этот [пример] (http://matplotlib.sourceforge.net/examples/pylab_examples/contourf_demo.html) ... – carla
Проблема в том, что положение маскированных областей изменяется в зависимости от входов. В идеале я бы хотел, чтобы сетка точек была контурной, чтобы в первую очередь не включать в себя пустоты данных, если это возможно. – LCSA