8000 Merge pull request #6841 from afvincent/fix_psd_demo3 · matplotlib/matplotlib@58a4173 · GitHub
[go: up one dir, main page]

Skip to content

Commit 58a4173

Browse files
authored
Merge pull request #6841 from afvincent/fix_psd_demo3
DOC: Switch to OO code style & ensure fixed y-range in `psd_demo3`
2 parents e6efa8e + be8e253 commit 58a4173

File tree

1 file changed

+25
-18
lines changed

1 file changed

+25
-18
lines changed

examples/pylab_examples/psd_demo3.py

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,43 @@
1-
# This is a ported version of a MATLAB example from the signal processing
2-
# toolbox that showed some difference at one time between Matplotlib's and
3-
# MATLAB's scaling of the PSD.
1+
"""This is a ported version of a MATLAB example from the signal
2+
processing toolbox that showed some difference at one time between
3+
Matplotlib's and MATLAB's scaling of the PSD.
4+
5+
"""
46

57
import numpy as np
68
import matplotlib.pyplot as plt
79
import matplotlib.mlab as mlab
810

11+
prng = np.random.RandomState(123456) # to ensure reproducibility
12+
913
fs = 1000
1014
t = np.linspace(0, 0.3, 301)
1115
A = np.array([2, 8]).reshape(-1, 1)
1216
f = np.array([150, 140]).reshape(-1, 1)
13-
xn = (A * np.sin(2 * np.pi * f * t)).sum(axis=0) + 5 * np.random.randn(*t.shape)
17+
xn = (A * np.sin(2 * np.pi * f * t)).sum(axis=0) + 5 * prng.randn(*t.shape)
18+
19+
fig, (ax0, ax1) = plt.subplots(ncols=2)
1420

21+
fig.subplots_adjust(hspace=0.45, wspace=0.3)
1522
yticks = np.arange(-50, 30, 10)
23+
yrange = (yticks[0], yticks[-1])
1624
xticks = np.arange(0, 550, 100)
17-
plt.subplots_adjust(hspace=0.45, wspace=0.3)
18-
plt.subplot(1, 2, 1)
1925

20-
plt.psd(xn, NFFT=301, Fs=fs, window=mlab.window_none, pad_to=1024,
26+
ax0.psd(xn, NFFT=301, Fs=fs, window=mlab.window_none, pad_to=1024,
2127
scale_by_freq=True)
22-
plt.title('Periodogram')
23-
plt.yticks(yticks)
24-
plt.xticks(xticks)
25-
plt.grid(True)
28+
ax0.set_title('Periodogram')
29+
ax0.set_yticks(yticks)
30+
ax0.set_xticks(xticks)
31+
ax0.grid(True)
32+
ax0.set_ylim(yrange)
2633

27-
plt.subplot(1, 2, 2)
28-
plt.psd(xn, NFFT=150, Fs=fs, window=mlab.window_none, noverlap=75, pad_to=512,
34+
ax1.psd(xn, NFFT=150, Fs=fs, window=mlab.window_none, pad_to=512, noverlap=75,
2935
scale_by_freq=True)
30-
plt.title('Welch')
31-
plt.xticks(xticks)
32-
plt.yticks(yticks)
33-
plt.ylabel('')
34-
plt.grid(True)
36+
ax1.set_title('Welch')
37+
ax1.set_xticks(xticks)
38+
ax1.set_yticks(yticks)
39+
ax1.set_ylabel('') # overwrite the y-label added by `psd`
40+
ax1.grid(True)
41+
ax1.set_ylim(yrange)
3542

3643
plt.show()

0 commit comments

Comments
 (0)
0