def noise_plot(signal, noise, normalise=False, **kwargs):
import matplotlib.pyplot as plt<EOL>n_traces = <NUM_LIT:0><EOL>for tr in signal:<EOL><INDENT>try:<EOL><INDENT>noise.select(id=tr.id)[<NUM_LIT:0>]<EOL><DEDENT>except IndexError:  <EOL><INDENT>continue<EOL><DEDENT>n_traces += <NUM_LIT:1><EOL><DEDENT>fig, axes = plt.subplots(n_traces, <NUM_LIT:2>, sharex=True)<EOL>if len(signal) > <NUM_LIT:1>:<EOL><INDENT>axes = axes.ravel()<EOL><DEDENT>i = <NUM_LIT:0><EOL>lines = []<EOL>labels = []<EOL>for tr in signal:<EOL><INDENT>try:<EOL><INDENT>noise_tr = noise.select(id=tr.id)[<NUM_LIT:0>]<EOL><DEDENT>except IndexError:  <EOL><INDENT>continue<EOL><DEDENT>ax1 = axes[i]<EOL>ax2 = axes[i + <NUM_LIT:1>]<EOL>fft_len = fftpack.next_fast_len(<EOL>max(noise_tr.stats.npts, tr.stats.npts))<EOL>if not normalise:<EOL><INDENT>signal_fft = fftpack.rfft(tr.data, fft_len)<EOL>noise_fft = fftpack.rfft(noise_tr.data, fft_len)<EOL><DEDENT>else:<EOL><INDENT>signal_fft = fftpack.rfft(tr.data / max(tr.data), fft_len)<EOL>noise_fft = fftpack.rfft(<EOL>noise_tr.data / max(noise_tr.data), fft_len)<EOL><DEDENT>frequencies = np.linspace(<NUM_LIT:0>, <NUM_LIT:1> / (<NUM_LIT:2> * tr.stats.delta), fft_len // <NUM_LIT:2>)<EOL>noise_line, = ax1.semilogy(<EOL>frequencies, <NUM_LIT> / fft_len * np.abs(noise_fft[<NUM_LIT:0>: fft_len // <NUM_LIT:2>]),<EOL>'<STR_LIT:k>', label="<STR_LIT>")<EOL>signal_line, = ax1.semilogy(<EOL>frequencies, <NUM_LIT> / fft_len * np.abs(signal_fft[<NUM_LIT:0>: fft_len // <NUM_LIT:2>]),<EOL>'<STR_LIT:r>', label="<STR_LIT>")<EOL>if "<STR_LIT>" not in labels:<EOL><INDENT>labels.append("<STR_LIT>")<EOL>lines.append(signal_line)<EOL><DEDENT>if "<STR_LIT>" not in labels:<EOL><INDENT>labels.append("<STR_LIT>")<EOL>lines.append(noise_line)<EOL><DEDENT>ax1.set_ylabel(tr.id, rotation=<NUM_LIT:0>, horizontalalignment='<STR_LIT:right>')<EOL>ax2.plot(<EOL>frequencies,<EOL>(<NUM_LIT> / fft_len * np.abs(signal_fft[<NUM_LIT:0>: fft_len // <NUM_LIT:2>])) -<EOL>(<NUM_LIT> / fft_len * np.abs(noise_fft[<NUM_LIT:0>: fft_len // <NUM_LIT:2>])), '<STR_LIT:k>')<EOL>ax2.yaxis.tick_right()<EOL>ax2.set_ylim(bottom=<NUM_LIT:0>)<EOL>i += <NUM_LIT:2><EOL><DEDENT>axes[-<NUM_LIT:1>].set_xlabel("<STR_LIT>")<EOL>axes[-<NUM_LIT:2>].set_xlabel("<STR_LIT>")<EOL>axes[<NUM_LIT:0>].set_title("<STR_LIT>")<EOL>axes[<NUM_LIT:1>].set_title("<STR_LIT>")<EOL>plt.figlegend(lines, labels, '<STR_LIT>')<EOL>plt.tight_layout()<EOL>plt.subplots_adjust(hspace=<NUM_LIT:0>)<EOL>fig = _finalise_figure(fig=fig, **kwargs)  <EOL>return fig<EOL>
Plot signal and noise fourier transforms and the difference.

:type signal: `obspy.core.stream.Stream`
:param signal: Stream of "signal" window
:type noise: `obspy.core.stream.Stream`
:param noise: Stream of the "noise" window.
:type normalise: bool
:param normalise: Whether to normalise the data before plotting or not.

:return: `matplotlib.pyplot.Figure`