Ответ 1
Цвета вне границ могут быть установлены с использованием методов set_over
и set_under
в цветовой палитре; см. документацию. Вам нужно будет указать эти значения при создании цветовой карты. Тем не менее, я не вижу никаких параметров matplotlibrc, чтобы установить значение по умолчанию для этого. Вы также можете задать запрос в списке рассылки matplotlib.
Изменить: я вижу, что происходит. Белая область, которую вы описываете, не выходит за рамки цветового диапазона. Это просто пустой фон осей. Поскольку вы создаете только определенные уровни, любые уровни за пределами этого диапазона не будут отображаться вообще, оставляя эти области пустыми. Чтобы получить то, что вы хотите, сделайте следующее:
cs = pyplot.contourf(x,y,z,levels=np.arange(50, 220, 20), cmap=pyplot.cm.jet, extend="both")
cs.cmap.set_under('k')
cs.set_clim(50, 210)
cb = pyplot.colorbar(cs)
Аргумент "extend" - это ключ; он говорит contourf идти вперед и строить все контуры, но сворачивать все за пределами данного диапазона в "слишком большие" и "слишком маленькие" категории. Вызов cs.set_clim
необходим, чтобы обойти некоторую странность, обнаруженную мной во время отладки; по какой-то причине, когда вы используете extend
, он управляет лимитами данных, поэтому нам нужно reset вернуть их к тому, кем мы хотим.
Кроме того, как раз в стиле, вы не должны делать такие вещи, как Colormap.set_under(cmap,color='k')
. Это вызывает метод класса и явно передает экземпляр внутри, что является нечетным способом его выполнения. Просто сделайте cmap.set_under(color="k")
.