45 lines
1.2 KiB
Python
45 lines
1.2 KiB
Python
from datetime import datetime, timedelta
|
|
|
|
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
import matplotlib.dates as mdates
|
|
|
|
|
|
def plot_spectrum(z, headers):
|
|
z_mean = np.mean(z)
|
|
z_std = np.std(z)
|
|
zmin = z_mean - 2 * z_std
|
|
zmax = z_mean + 6 * z_std
|
|
|
|
f_min = -headers[0]['bw']*1e-3
|
|
f_max = +headers[0]['bw']*1e-3
|
|
|
|
utc_start = headers[0]['utc_start']
|
|
t_min = mdates.date2num(utc_start + timedelta(seconds=0))
|
|
t_max = mdates.date2num(utc_start + timedelta(seconds=z.shape[1]))
|
|
|
|
fig, ax = plt.subplots(figsize=(12, 6))
|
|
|
|
ax.imshow(z,
|
|
origin='lower',
|
|
aspect='auto',
|
|
extent=[t_min, t_max, f_min, f_max],
|
|
vmin=zmin,
|
|
vmax=zmax,
|
|
interpolation='None',
|
|
cmap='viridis')
|
|
|
|
ax.xaxis_date()
|
|
date_format = mdates.DateFormatter('%H:%M:%S')
|
|
ax.xaxis.set_major_formatter(date_format)
|
|
|
|
# diagonal xaxis labels
|
|
fig.autofmt_xdate()
|
|
|
|
plt.xlabel('Time; start: {:%Y-%m-%d %H:%M:%S}Z'.format(headers[0]['utc_start']))
|
|
plt.ylabel('Freqeuncy / kHz; center: {} MHz'.format(headers[0]['freq'] * 1e-6))
|
|
|
|
plt.tight_layout()
|
|
|
|
plt.show()
|