Как я могу изменить данные на одной оси?
Я делаю некоторый спектральный анализ некоторых данных, и моя ось 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 мне пришлось использовать исходные данные, чтобы установить ее правильно).
Что я делаю не так?