我曾经将我的相关矩阵绘制成:
corr_matrix = np.corrcoef(W)
plt.matshow(corr_matrix)
labels = ['P1', 'P2', 'P3', 'P4', 'P5', 'P6', 'P7', 'P8', 'P9', 'P10', 'P11', 'P12', 'P13', 'P14', 'P15', ]
plt.xticks(range(0,15),labels)
plt.yticks(range(0,15),labels)
plt.colorbar()
plt.show()
现在我正在处理一些提供的代码,这些代码使用axes.draw()
方法随时间绘制2个数字中的不同内容。
绘制数字的方法是:
fig_1, axes_1 = plt.subplots(yl,5) # fig 1
fig_2, axes_2 = plt.subplots(5,1) # fig 2
并在设置数据后的某个时刻plt.draw()
用于重绘图像。
我试图添加另一个数字,如:
fig_cor, axes_cor = plt.subplots(1,1)
并使用
axes_cor.imshow(corr_matrix)
labels = ['P1', 'P2', 'P3', 'P4', 'P5', 'P6', 'P7', 'P8', 'P9', 'P10', 'P11', 'P12', 'P13', 'P14',
'P15']
axes_cor.set_xticks(range(0, 15), labels)
axes_cor.set_yticks(range(0, 15), labels)
# axes_cor.colorbar()
plt.draw()
图像显示,但我的标签没有显示,当我尝试绘制颜色条时,我得到'AxesSubplot' object has no attribute 'colorbar'
。任何人都可以帮我解决这个问题吗?
我想要展示的内容:
我得到了什么:
答案 0 :(得分:0)
我认为在imshow中创建了与标签元素不匹配的刻度。可能有一个优雅的解决方案,但下面的例子也实现了它。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
corr_matrix= np.random.rand(20,20)
fig_cor, axes_cor = plt.subplots(1,1)
fig_cor.set_size_inches(6, 6)
labels = ['P1', 'P2', 'P3', 'P4', 'P5', 'P6', 'P7', 'P8', 'P9', 'P10', 'P11', 'P12', 'P13', 'P14','P15']
myimage = axes_cor.imshow(corr_matrix)
plt.colorbar(myimage)
axes_cor.set_xticks(np.arange(0,corr_matrix.shape[0], corr_matrix.shape[0]*1.0/len(labels)))
axes_cor.set_yticks(np.arange(0,corr_matrix.shape[1], corr_matrix.shape[1]*1.0/len(labels)))
axes_cor.set_xticklabels(labels)
axes_cor.set_yticklabels(labels)
plt.draw()
结果