Этот вопрос тесно связан с этим:
Matplotlib: pcolor () не отображает последнюю строку и столбец?
Я хочу растровый график ежечасные данные, помеченные по оси Y от 0 до 24. Наличие вектора времени того же размера, что и массив данных, заставил меня пропустить строку данных:
import matplotlib.pyplot as plt
import numpy as np
x=np.random.uniform(size=(24,10)) # dummy data
times=np.arange(24)
xnum=np.arange(10)
fig,ax=plt.subplots()
img=ax.pcolormesh(xnum,times,x,cmap='seismic',
rasterized=False)
Дая мне это:
![first plot](https://i.stack.imgur.com/AoX6q.png)
с пропущенным последним часом. Тогда я нашел решение из постинга выше, который должен был добавить 1 к массиву времени. Я хочу этикетки каждые 2 часа, поэтому я также изменяю это:
times=np.arange(25) # NOTE ONE MORE THAN DATA SIZE
fig,ax=plt.subplots()
img=ax.pcolormesh(xnum,times,x,cmap='seismic',
rasterized=False)
yticki=2
ax.set_yticks(np.arange(min(times), max(times)+yticki,yticki))
![enter image description here](https://i.stack.imgur.com/yI3Gz.png)
Отлично, похоже, работает. Но теперь я хочу добавить контуры. Если я сделаю это с times = np.arange (24) , то я смогу добавить контуры вот так
cont_levs=[-0.5,0.5]
cs=ax.contour(xnum,times,x,cont_levs, colors='k')
и получу это:
![enter image description here](https://i.stack.imgur.com/kK8lQ.png)
Но моя верхняя строка снова отсутствует ...
Однако, если я попробую это с
times=np.arange(25)
, я получу ошибку:
TypeError: Длина y должна быть числом строк в z.
Я могу получить правильные контуры И контуров меток сверху, ограничив вектор y 0- 23:
cs=ax.contour(xnum,times[:-1],x,cont_levs, colors='k')
Это дает мне этот график:
![enter image description here](https://i.stack.imgur.com/O0CeC.png)
Так что теперь у меня есть правильные утики И 24 растра И контуры сверху, НО только контуры go до времени = 23, что заставляет меня думать, что они либо «сдавлены» и, следовательно, ошибочны, либо, по крайней мере, пропустили последний час.
i можно сместить контуры вверх, чтобы они начинались в t = 0,5 и заканчивались в t = 23,5, выполняя это:
cs=ax.contour(xnum,times[:-1]+0.5,x,cont_levs, colors='k')
, но есть ли способ сохранить все 24 строки данных в растровом графике с помощью исправление у маркировки И также контуры оверплота, идущие прямо от нижней точки t = 0 к вершине (t = 24) графика?