Я пытаюсь создать заполненный контурный график в matplotlib, используя contourf. Данные отсутствуют в виде зубчатой структуры в нижней части графика. График контура оказывается пустым не только там, где маскируются исходные данные, но также и в карманах, где алгоритм контура не может интерполировать чисто из-за недостаточной окрестности хороших данных.
Я знаю, как расширить набор данных, чтобы получить правдоподобные контуры в этих карманах. Однако, если я строю расширенные данные, я получаю заполнение контура везде. Я хотел бы замаскировать регионы, где отсутствовали исходные данные в черном или белом цвете.
В предыдущей теме я узнал, как сделать это для изображения, построив первое изображение, а затем накрыв его другим изображением, маскирующим плохие области. Аналогом будет фрагмент кода, приведенный ниже, но он не работает для контура ... Я не могу заставить imshow bad_data скрыть расширенный график контура. Возможно ли это?
Спасибо,
Eli
import matplotlib.pyplot as plt
lev = [0.0,0.1,0.2,0.5,1.0,2.0,4.0,8.0,16.0,32.0]
norml = colors.BoundaryNorm(lev, 256)
# this is the contour plot, using extended_data so that the contours are plausibly extended
cs = plt.contourf(x,z,extended_data,levels = lev, cmap = cm.RdBu_r,norm = norml)
# now the attempt to cover it up -- but imshow will not cover up the original plot as it will with another image
bad_data = np.ma.masked_where(~data.mask, data.mask, copy=True)
plt.imshow(bad_data, interpolation='nearest', aspect = 'auto', cmap=cm.gray)
plt.show()