Computer >> Máy Tính >  >> Lập trình >> Python

Làm cách nào để vẽ một biểu đồ quang phổ giống như cách mà biểu đồ của pylab () thực hiện? (Matplotlib)

Để vẽ một biểu đồ quang phổ giống như cách mà biểu đồ của pylab () thực hiện, chúng ta có thể thực hiện các bước sau -

  • Đặt kích thước hình và điều chỉnh phần đệm giữa và xung quanh các ô phụ.
  • Tạo t, s1, s2, nse, x, NEFT Fs điểm dữ liệu bằng cách sử dụng numpy.
  • Tạo một hình mới hoặc kích hoạt một hình hiện có bằng cách sử dụng subplots () phương thức với nrows =2 .
  • t x điểm dữ liệu bằng cách sử dụng plot () phương pháp.
  • Bố trí lưới theo kiểu đường thẳng hiện tại.
  • Đặt lề trục X.
  • Vẽ biểu đồ quang phổ bằng cách sử dụng specgram () phương pháp.
  • Bố trí lưới theo kiểu đường hiện tại với kiểu đường chấm và một số thuộc tính khác.
  • Để hiển thị hình này, hãy sử dụng show () phương pháp.

Ví dụ

import matplotlib.pyplot as plt
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

dt = 0.0005
t = np.arange(0.0, 20.0, dt)
s1 = np.sin(2 * np.pi * 100 * t)
s2 = 2 * np.sin(2 * np.pi * 400 * t)
s2[t <= 10] = s2[12 <= t] = 0
nse = 0.01 * np.random.random(size=len(t))
x = s1 + s2 + nse
NFFT = 1024
Fs = int(1.0 / dt)

fig, (ax1, ax2) = plt.subplots(nrows=2)
ax1.plot(t, x)
ax1.grid(axis="x", ls="dotted", lw=2, color="red")
ax1.margins(x=0)

Pxx, freqs, bins, im = ax2.specgram(x, NFFT=NFFT, Fs=Fs, noverlap=900)
ax2.grid(axis="x", ls="dotted", lw=2, color="red")

plt.show()

Đầu ra

Làm cách nào để vẽ một biểu đồ quang phổ giống như cách mà biểu đồ của pylab () thực hiện? (Matplotlib)