Одинаковые x-тики для всех подзаголовков в matplotlib

Хотя этот вопрос уже задавался, но я не могу его реализовать. Я не знаю, как получитьxticksдля каждого участка, а затем замените его новым. Другая проблема заключается в том, что в каждом подзаголовке количествоxticksэтикетки разные.
У меня есть фиктивные данные

Fs = 8000
f = 50
sample = 8000
x = np.arange(sample)
y = np.sin(2 * np.pi * f * x / Fs)

Я реализовал на нем дискретное вейвлет-преобразование.

coefs = pywt.wavedec(y, wavelet='db4', level=None)
len(coefs)
fig,ax=plt.subplots(nrows=8,ncols=1,figsize=(8,10))
label=['cA','cD6','cD5','cD4','cD3','cD2','cD1']
for i,l in zip(range(8),label):
  ax[0].plot(y,color='b')
  ax[0].set_xticks([],[1,2,3,4,5,6,7,8])
  ax[0].set_title('EEG',x=-0.1,y=0.1)
  ax[i+1].plot(coefs[i-1],color='b')
  ax[i+1].set_title(l,x=-0.1,y=0.1)

Он строит следующее изображение. Я хочу, чтобы диапазон значений по оси X от0-8 для всех участков

1 ответ

Я могу предложить привести ваши данные к одному масштабу, чтобы использовать общую ось x, как показано ниже.

      import matplotlib.pyplot as plt
import numpy as np
import pywt

Fs = 8000
f = 50
sample = 8000

x = np.arange(sample)
y = np.sin(2 * np.pi * f * x / Fs)

coefs = pywt.wavedec(y, wavelet='db4', level=None)

fig, ax = plt.subplots(nrows=8, ncols=1, figsize=(8,10), sharex=True)

label=['cA','cD6','cD5','cD4','cD3','cD2','cD1']

for i, l in zip(range(8),label):
    ax[0].plot(y[:9], color='b')             # << bring the data to one scale with slice [:9]
    ax[0].set_title('EEG', x=-0.1, y=0.1)
    
    ax[i+1].plot(coefs[i-1][:9], color='b')  # << bring the data to one scale with slice [:9]
    ax[i+1].set_title(l, x=-0.1, y=0.1)

plt.show()

Возвращает

Другие вопросы по тегам