python - 使用带有矩形瓷砖的颜色条在相关矩阵中绘制数字范围 [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()
这是我的情节:
该图的问题是瓷砖中的着色不正确,我不确定如何为某个范围内的瓷砖着色。此外,可以通过将标题设为矩形来减少瓷砖上的浪费空间,但我相信 matshow 没有那个选项。我发现了一些基于对象绘制的解决方法,这可能会使我的生活更加复杂。任何帮助将不胜感激。
解决方案
我想出了我的查询的答案。我改变了我的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()
推荐阅读
- javascript - 无法运行我的 testcafe 测试。代码和包 Json 看起来正确
- azure - 当我期待 https://login.microsoftonline.com 时,来自天蓝色活动目录的访问令牌中的颁发者是 https://sts.windows.net
- html - 如何使引导列高度为剩余屏幕高度
- facebook-messenger - 从 Messenger 浏览器分享到 Messenger
- python - 优化现有的 3D Numpy 矩阵乘法
- dns - 仅在 Windows 2012 R2 上的 DNS 解析失败
- c++ - 什么是只调用一次的控制台应用程序,其参数称为
- docker - docker-compose-maven-plugin 未能执行目标
- c# - 如何在 C# 中创建 TensorProto,方法与 Python 相同
- python - 如何构建面向对象的 Python 3 项目及其导入?