Я пытаюсь использовать функцию 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 ячеек окрашиваются путем увеличения оттенка. Это более четко показывает неровные формы. Я могу включить код, если хотите, но я получаю то же самое с (гораздо менее сложным) случайным кодом.
И вот как это выглядит (опять же, увеличено), когда я использую маленькую сетку:
grid = np.random.rand((width, width, 3))
заменит ваши вложенные циклы. - person tacaswell   schedule 21.10.2014