Изменение значений оси на графике - PullRequest
1 голос
/ 19 июля 2011

Как я могу изменить данные на одной оси?

Я делаю некоторый спектральный анализ некоторых данных, и моя ось 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 Ответ

2 голосов
/ 19 июля 2011

Да, вы можете использовать метод xticks, приведенный в этом примере .

Существуют и более сложные способы сделать это.См тикер .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...