更改图表的轴值

1 投票
1 回答
1981 浏览
提问于 2025-04-16 21:51

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

我正在对一些数据进行光谱分析,我的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 个回答

2

是的,你可以使用 xticks 方法,具体可以参考这个 例子

还有一些更高级的方法可以实现这个功能。可以看看 ticker

撰写回答