使用轴

时间:2017-03-24 20:50:14

标签: python matplotlib plot

我曾经将我的相关矩阵绘制成:

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'。任何人都可以帮我解决这个问题吗?

我想要展示的内容:

enter image description here

我得到了什么:

enter image description here

1 个答案:

答案 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()

结果

enter image description here