Python / Matplotlib - диапазон цветовой шкалы и отображаемые значения - PullRequest
28 голосов
/ 29 апреля 2011

При использовании matplotlib с контурным графиком у меня возникают проблемы с отображением цветовой панели так, как я хочу. Я прочитал множество подобных примеров, но так и не смог получить то, что хочу.

На изображении ниже я хочу изменить две вещи. Я хочу, чтобы минимальное и максимальное значения отображались на цветной панели (максимальное значение должно быть 2,0, а минимальное - 0,1). Эти два значения должны быть на самом краю цветовой шкалы. Кроме того, я хочу, чтобы цветовая панель отображала значение при каждом переходе цвета. Например. на графике ниже, между 2.1 и 1.8, есть другой цветовой переход, где значение не отображается.

Может кто-нибудь, пожалуйста, помогите мне? Я думаю, что мне, возможно, придется использовать норму, но она пока не работает для меня.

Спасибо

enter image description here

Код:

import numpy as np
import matplotlib.pyplot as plt

xi = np.array([0., 0.5, 1.0])
yi = np.array([0., 0.5, 1.0])
zi = np.array([[0., 1.0, 2.0],
               [0., 1.0, 2.0],
               [-0.1, 1.0, 2.0]])

plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k')
plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet)
plt.colorbar()
plt.show()

1 Ответ

37 голосов
/ 29 апреля 2011

Если я правильно понимаю, что вы хотите, я думаю, что это должно сделать это:

import numpy as np
import matplotlib.pyplot as plt

xi = np.array([0., 0.5, 1.0])
yi = np.array([0., 0.5, 1.0])
zi = np.array([[0., 1.0, 2.0],
               [0., 1.0, 2.0],
               [-0.1, 1.0, 2.0]])

v = np.linspace(-.1, 2.0, 15, endpoint=True)
plt.contour(xi, yi, zi, v, linewidths=0.5, colors='k')
plt.contourf(xi, yi, zi, v, cmap=plt.cm.jet)
x = plt.colorbar(ticks=v)
print x
plt.show()

enter image description here

...