2015-07-24 1 views
3

Название вопроса говорит само за себя. Взгляните на рисунок, созданный этим кодом. Да ??Почему у этого шаблона Matplotlib есть дополнительная пустая колонна?

data = np.random.randn(20*15) 
matrix = data.reshape((20,15)) 

xlabels = range(15) 
ylabels = range(20) 

fig, ax = plt.subplots(figsize=(13,10)) 
heatmap = ax.pcolor(matrix, cmap=mpl.cm.PiYG, vmax=max(data), vmin=min(data)) 

plt.xticks(xlabels) 
plt.yticks(ylabels) 
plt.colorbar(heatmap) 

enter image description here

+1

Я подозреваю, что это имеет какое-то отношение к ошибкам преобразования int/float во внутренних элементах. То есть, 'matplotlib' считает, что ограничения' x' (0, 15.0 ... 01) вместо (0, 15). Если вы установите его явно ('ax.set_xlim (0, 15)'), или если вы измените '15' на' 20' в размерах вашего массива, то нет белого столбца. Возможно, стоит записать ошибку «matplotlib». – fjarri

+0

@fjarri Хороший призыв к ax.set_xlim (0,15) работает как шарм. –

+0

Работает для меня тоже. Хорошо поймал! Отправьте свой комментарий в качестве ответа, и я сообщу об этом как об ошибке. – Wapiti

ответ

4

(сделав ответ из комментария)

Я подозреваю, что это имеет какое-то отношение к intfloat ошибок преобразования в внутренностей matplotlib. То есть matplotlib считает, что ограничения x (0, 15.0 ... 01) и округляют их до (0, 16) вместо того, чтобы держать их в (0, 15). Если вы установите его в явном виде

ax.set_xlim(0, 15) 

или, если вы измените 15 на 20 в ваших размерах массивов, нет белых колонок. Возможно, стоит записать ошибку на matplotlib.

Смежные вопросы