ColorMap игнорируется для графика Matplotlib contourf с пользовательскими уровнями

StackOverflow https://stackoverflow.com/questions/9321390

Вопрос

Я пытаюсь создать заполненный контурный сюжет в Matplotlib (Win7, 1.1.0). Я хочу выделить определенные значения, и уровни ближе к журналу, чем линейные.

Есть многочисленные коллеги, которые мне подойдут, но мой выбор CMAP игнорируется.

Мне нужно создать пользовательскую «нормализовать»? Если да, то каждый контур раскрашивается в соответствии с его краем, а затем заполнен тем же цветом до следующего более низкого значения? Почему симптом этого игнорировать мою цветную карту ... это какое -то исключение во время строительства, которое поймается, и моя просьба молча игнорируется?

Мои исходные данные имели отсутствующие значения. Я играл с тем, чтобы сделать это NAN, большую и маленькую ... в каждом случае я пробовал их маскировать и не маскировать ценности «наружные». Я также попробовал все перестановки, используя уровни по умолчанию и норму.

lev = [0.1,0.2,0.5,1.0,2.0,4.0,8.0,16.0,32.0]
norml = colors.normalize(0,32)
cs = plt.contourf(x,z,data,cmap=cm.gray, levels=lev, norm = norml)

Я надеюсь, что этого фрагмента достаточно, чтобы хотя бы начать разговор.

Спасибо, Эли

Это было полезно?

Решение

Если я правильно понял, вам необходимо перенести свои данные в цвета, используя ваши уровни в качестве основы, а не линейного масштабирования по умолчанию. Если это правильно, то вам нужно использовать colors.BoundaryNorm как фактор нормы. Рассмотрим следующий пример:

x = np.arange(0,8,0.1)
y = np.arange(0,8,0.1)
z = (x[:,None]-4) ** 2 + (y[None,:]-4) ** 2

lev = [0.1,0.2,0.5,1.0,2.0,4.0,8.0,16.0,32.0]
norml = colors.BoundaryNorm(lev, 256)
cs = plt.contourf(x, y, z, cmap = cm.jet, levels = lev, norm = norml)
plt.show()

Это дает

enter image description here

Сравните это с дефолтом Normalize поведение:

enter image description here

Надеюсь, это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top