Сетка Matplotlib imshow() неравномерна, когда размер сетки большой

Я пытаюсь использовать функцию imshow() в matplotlib для отображения значений цвета в сетке 177 X 177. Когда я запускаю следующий код на маленькой (30X30) сетке (т. е. я устанавливаю width = 30), изображение, которое он создает, имеет красивые квадраты одинакового размера. Когда я запускаю его на более крупной сетке (150X150), квадраты имеют неравномерные пропорции. Некоторые растянуты в одном или обоих измерениях. Вот упрощенная версия кода, который я использую:

grid = [[]]*width
for i in range(width):
    grid[i] = [[]]*width
    for j in range(width):
        grid[i][j] = (random(), random(), random())

plt.imshow(grid, interpolation="none", aspect=1)
plt.savefig("test.png")

Есть идеи, как сделать сетку ровной? Я пробовал все, что обсуждалось с соотношением сторон здесь, но, похоже, это не решило проблему. Я использую Python 2.7.6 и matplotlib версии 1.3.1.

Редактировать: Вот изображение, показывающее, как выглядят ячейки из большого пояса, если я полностью увеличу масштаб. Это было получено с использованием немного другой функции окраски, в которой кластеры из 9 ячеек окрашиваются путем увеличения оттенка. Это более четко показывает неровные формы. Я могу включить код, если хотите, но я получаю то же самое с (гораздо менее сложным) случайным кодом. введите здесь описание изображения

И вот как это выглядит (опять же, увеличено), когда я использую маленькую сетку:

введите здесь описание изображения


person seaotternerd    schedule 20.10.2014    source источник
comment
Я не могу воспроизвести вашу проблему, пожалуйста, выложите изображения. Кроме того, grid = np.random.rand((width, width, 3)) заменит ваши вложенные циклы.   -  person tacaswell    schedule 21.10.2014
comment
Изображение опубликовано. И хорошо поймать код! Я написал этот код быстро, чтобы предоставить более простой пример.   -  person seaotternerd    schedule 21.10.2014


Ответы (1)


Хорошо, я понял это. Проблема заключалась в том, что я не использовал достаточно высокое разрешение при сохранении изображения. plt.savefig("test.png", dpi=1000) дает изображение, на котором даже крупная сетка изображается квадратами одинакового размера.

Не увеличивая dpi для более крупной сетки, я фактически пытался отображать больше информации в том же количестве пикселей, поэтому разрешение уменьшалось до такой степени, что ячейки становились неправильными.

person seaotternerd    schedule 21.10.2014