在带有矩形图块的颜色条的相关矩阵中绘制数字范围 [matshow (matplotlib)]
plotting number range in a correlation matrix with colorbar with rectangular tiles [matshow (matplotlib)]
我正在尝试绘制一个相关矩阵,其值显示在图中。我想要的不是相关系数的单个值,而是图块上的一个范围(置信区间)。为了实现这一点,我首先使用 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()
这是我的情节:
此图的问题是图块中的颜色不正确,我不确定如何为某个范围的图块着色。此外,瓷砖上有一个浪费的 space 可以通过将标题制作成矩形来减少,但我相信 matshow 没有那个选项。我找到了一些基于 object 绘图的解决方法,这可能会使我的生活变得更加复杂。任何帮助将不胜感激。
我想出了一个问题的答案。我更改了我的 aspect='auto'
并且由于另一个问题 colorbar 问题,瓷砖变成了矩形,我决定简单地使用这些数字的平均值进行绘图:
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()
我正在尝试绘制一个相关矩阵,其值显示在图中。我想要的不是相关系数的单个值,而是图块上的一个范围(置信区间)。为了实现这一点,我首先使用 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()
这是我的情节:
此图的问题是图块中的颜色不正确,我不确定如何为某个范围的图块着色。此外,瓷砖上有一个浪费的 space 可以通过将标题制作成矩形来减少,但我相信 matshow 没有那个选项。我找到了一些基于 object 绘图的解决方法,这可能会使我的生活变得更加复杂。任何帮助将不胜感激。
我想出了一个问题的答案。我更改了我的 aspect='auto'
并且由于另一个问题 colorbar 问题,瓷砖变成了矩形,我决定简单地使用这些数字的平均值进行绘图:
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()