В дополнение к ответу @TomdeGeus, здесь есть кое-что, что может помочь.Поскольку мне нужно было нарисовать фигуру, где ось Y растягивается от 0,5 до 3,5, а ось X растягивается от 0 до 40, она была очень сжатой на изображении, и мне, возможно, пришлось форсировать соотношение сторон, которое не былот работает.Также было что-то не так с отображаемыми галочками.
Однако после исправления соотношения сторон, я определенно рекомендую вам следовать ответу Тома де Жеуса, это правильный способ сделать это.
Таким образом, я по-прежнему строю изображение в «пиксельных» координатах, т.е. выбираю экстент так, чтобы оси x и y подсчитывали пиксели, но начинались с 0, а не с -0,5, как поведение по умолчанию plt.imshow()
fig, ax = plt.subplots()
im = ax.matshow(value_grid, origin='lower', extent=(0, len(x_edges)-1, 0, len(y_edges)-1)
Где len(y_edges) - 1
подсчитывает количество пикселей, которые я хочу на оси Y (а y_edges
- список, содержащий значения границ ячейки, которые я хочу отобразить на оси Yкак и раньше.
Затем я вручную заменяю метки тиков, но мне также нужно правильно сопоставить их с правильными тиками.
ax.set_xticks(list(range(len(x_edges))))
ax.set_xticklabels(x_edges)
ax.set_yticks(list(range(len(y_edges))))
ax.set_yticklabels(y_edges)
Это сохраняет квадратный характер пикселей, создаваемых imshow
, однако вы должны иметь в виду, что базовая ось по-прежнему определяется в пикселях (т. Е. Если я хочу разместить точку на координате (25.0, 2.0), она фактически не будет выглядеть каквверх в этом месте.