Одинаковые 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()
Возвращает