更改绘图上的轴值

时间:2011-07-19 18:10:10

标签: python matplotlib data-analysis

如何更改一个轴上的数据?

我正在对一些数据进行一些频谱分析,而我的x轴是某些矩阵的索引。我想改变它,以便x轴成为数据本身。

我正在使用imshow()来绘制数据(我有一个矩阵,其元素是一些强度,y轴是它们的探测器 - 源对应对,x轴应该是它们的频率)。

它的代码写在这里:

def pltspec(dOD, self):
    idx = 0
    b = plt.psd(dOD[:,idx],Fs=self.fs,NFFT=512)
    B = np.zeros((2*len(self.Chan),len(b[0])))
    for idx in range(2*len(self.Chan)):
        b = plt.psd(dOD[:,idx],Fs=self.fs,NFFT=512)
        B[idx,:] = 20*log10(b[0])
    fig = plt.figure()
    ax = fig.add_subplot(111)
    plt.imshow(B, origin = 'lower')
    plt.colorbar()
    locs, labels = xticks(find(b[1]), b[1])
    plt.axis('tight')
    ax.xaxis.set_major_locator(MaxNLocator(5))

我认为如果有一种方法可以将某个数组的索引与其值进行交换,我的问题就会得到解决。

我设法使用了行locs, labels = xticks(find(b[1]), b[1])。但是在我的图表中我的轴间隔是不正确的......我认为它与MaxNLocator有关(我曾经用它来减少刻度数)。

如果我使用xlim,我可以将图形设置为我想要的,但x轴仍然是相同的(在xlim上我必须使用原始数据来设置它)。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

是的,您可以使用此example中举例说明的xticks方法。

还有更复杂的方法。请参阅 ticker