You won't see anything pretty with a linear x scale. I do not know numpy but I am familiar with matlab and there are some functions to do plot in logs. Try to use x-log scale with:
import matplotlib.pyplot as pyplot
fig = pyplot.figure()
ax = fig.add_subplot(2,1,1)
line, = ax.plot(w/np.max(w), h_dB, color='blue', lw=2)
ax.set_xscale('log')
show()
I haven't tested it btw, I don't have python installed :(
Edit:
I tried to modelized a butterworth filter in matlab for an IIR filter order 4 and one IIR filter order 20.
%!/usr/local/bin/matlab
%% Inputs
fs = 40e6;
fc = 1e6;
BW = 20e3;
fl = (fc - BW/2);
fh = (fc + BW/2);
%% Build bandpass filter IIR Butterworth order 4
N = 4; % Filter Order
h = fdesign.bandpass('N,F3dB1,F3dB2', N, fl, fh, fs);
Hd1 = design(h, 'butter');
%% Build bandpass filter IIR Butterworth order 50
N = 20; % Filter Order
h = fdesign.bandpass('N,F3dB1,F3dB2', N, fl, fh, fs);
Hd2 = design(h, 'butter');
%% Compare
fvtool(Hd1,Hd2);
And here the coefficients A and B for the first filter:
FilterStructure: 'Direct-Form II Transposed'
A: [2.46193004641106e-06 0 -4.92386009282212e-06 0 2.46193004641106e-06]
B: [1 -3.94637005453608 5.88902106889851 -3.93761314372475 0.995566972065978]
If I get some time I will try to do the same with numpy !