import pyfar as pf
import matplotlib.pyplot as plt
import numpy as np
# generate data
data = pf.FrequencyData([1, 0], [5e3, 20e3])
interpolator = pf.dsp.InterpolateSpectrum(
    data, 'magnitude', ('nearest', 'linear', 'nearest'))
signal = interpolator(64, 44100)
signal = pf.dsp.linear_phase(signal, 32)
# plot input and output data
with pf.plot.context():
    _, ax = plt.subplots(2, 2)
    # time signal (linear and logarithmic amplitude)
    pf.plot.time(signal, ax=ax[0, 0])
    pf.plot.time(signal, ax=ax[1, 0], dB=True)
    # frequency plot (linear x-axis)
    pf.plot.freq(signal, dB=False, xscale="linear", ax=ax[0, 1])
    pf.plot.freq(data, dB=False, xscale="linear",
                 ax=ax[0, 1], c='r', ls='', marker='.')
    ax[0, 1].set_xlim(0, signal.sampling_rate/2)
    # frequency plot (log x-axis)
    pf.plot.freq(signal, dB=False, ax=ax[1, 1], label='input')
    pf.plot.freq(data, dB=False, ax=ax[1, 1],
                 c='r', ls='', marker='.', label='output')
    min_freq = np.min([signal.sampling_rate / signal.n_samples,
                       data.frequencies[0]])
    ax[1, 1].set_xlim(min_freq, signal.sampling_rate/2)
    ax[1, 1].legend(loc='best')
