Matplotlib - контурный сюжет с одним значением
Я хочу сделать контурный график некоторых данных, но не исключено, что все значения в поле совпадают. Это вызывает ошибку в matplotlib, что имеет смысл, поскольку на самом деле нет контура, который нужно создать. Например, если вы запустите приведенный ниже код, вы получите сообщение об ошибке, но удалите второе определение zi
и он работает, как ожидалось.
Как сделать контурный график для некоторых данных, если это однородное поле? Я хочу, чтобы он выглядел точно так же, как обычный контурный график (чтобы была рамка, заполненная каким-то цветом, и чтобы отображалась цветная полоса сбоку. Цветная полоса могла бы быть однородного цвета или все же отображать диапазон из 15 цветов, я полагаю, все равно).
Код:
from numpy import array
import matplotlib.pyplot as plt
xi = array([0., 0.5, 1.0])
yi = array([0., 0.5, 1.0])
zi = array([[0., 1.0, 2.0],
[0., 1.0, 2.0],
[0., 1.0, 2.0]])
zi = array([[1.0, 1.0, 1.0],
[1.0, 1.0, 1.0],
[1.0, 1.0, 1.0]])
CS = plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k')
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet)
plt.colorbar()
plt.show()
1 ответ
Что ж, contourf
справляется с этим отлично, это contour
это душит
Почему бы просто не сделать это:
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.ones((3,3))
try:
CS = plt.contour(xi, yi, zi, 15, linewidths=0.5, colors='k')
except ValueError:
pass
CS = plt.contourf(xi, yi, zi, 15, cmap=plt.cm.jet)
plt.colorbar()
plt.show()
Таким образом, вы получите заполненный (зеленый, по умолчанию) прямоугольник, если есть однородное поле, и заполненный контурный график с линиями в противном случае.