построение диапазона чисел в корреляционной матрице с цветовой шкалой с прямоугольными плитками [matshow (matplotlib)] - PullRequest
0 голосов
/ 11 мая 2018

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

cax = ax.matshow(data, interpolation='nearest', cmap=GnRd, vmin=-1, vmax=1 ,alpha=1 )
fig.colorbar(cax, ticks=[-1,0,1], shrink=0.8)
for (i, j), z in np.ndenumerate(data2):
  if i>=j and z > -0.5 and z < 1:
     ax.text(j, i, '{:0.2f}'.format(z), ha='left', va='center', size=28, color='black', **hfont)
  if z < -0.5 :
     ax.text(j, i, '{:0.2f}'.format(z), ha='left', va='center', size=28, color='black', fontweight='bold', **hfont)
  if z == 1 :
     ax.text(j, i, '{:0.2f}'.format(z), ha='center', va='center', size=28, color='black', fontweight='bold', **hfont)
for (i, j), z in np.ndenumerate(data3):
  if i>=j and z > -0.5 and z <1:
     ax.text(j, i, '{:0.2f}'.format(z), ha='right', va='center', size=28, color='black', **hfont)
  if z < -0.5 :
     ax.text(j, i, '{:0.2f}'.format(z), ha='right', va='center', size=28, color='black', fontweight='bold', **hfont)

plt.show()

и вот мой график:

enter image description here

Проблема с этим графиком заключается в неправильной окраске плиток иЯ не уверен, как покрасить плитки для диапазона.Кроме того, на плитках есть пустое пространство, которое можно уменьшить, сделав заголовки прямоугольными, но я считаю, что matshow не дает такой возможности.Я нашел несколько работ на основе рисования объектов, которые, вероятно, сделают мою жизнь более сложной.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 11 мая 2018

Я пришел с ответом на мой запрос. Я изменил свой aspect='auto' и плитки стали прямоугольными для другой проблемы с цветовой шкалой, я решил просто использовать среднее из этих чисел для построения:

cax = ax.matshow(data, interpolation='nearest', cmap=GnRd, vmin=-1, vmax=1 ,alpha=1, aspect='auto' )
fig.colorbar(cax, ticks=[-1,0,1], shrink=0.8)
for (i, j), z in np.ndenumerate(data2):
   if i>=j and z > -0.5 and z < 1:
      ax.text(j, i, '{:0.2f}'.format(z), ha='left', va='center', size=28, color='black', **hfont)
   if z < -0.5 :
      ax.text(j, i, '{:0.2f}'.format(z), ha='left', va='center', size=28, color='black', fontweight='bold', **hfont)
    if z == 1 :
      ax.text(j, i, '{:0.2f}'.format(z), ha='center', va='center', size=28, color='black', fontweight='bold', **hfont)
for (i, j), z in np.ndenumerate(data3):
     if i>=j and z > -0.5 and z <1:
       ax.text(j, i, '{:0.2f}'.format(z), ha='right', va='center', size=28, color='black', **hfont)
     if z < -0.5 :
       ax.text(j, i, '{:0.2f}'.format(z), ha='right', va='center', size=28, color='black', fontweight='bold', **hfont)

plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...