Understanding the Chebyshev2 Bandpass Filter Poles-Zeros Plot

EDIT

This ended up being a bug with my plotting code :)

I'm relatively new to using IIR filters, I wanted a bandpass filter for the 0.5Hz -> 5.0Hz frequency range and was looking at the zero-pole plots for different options scipy gives you.

I'm using

def zpk_plots(low_cutoff=0.5, high_cutoff=5.0, order=5, attenuation=40):
sampling_freq = 30
nyquist_freq = 0.5*sampling_freq
norm_low_cutoff = low_cutoff / nyquist_freq
norm_high_cutoff = high_cutoff / nyquist_freq
cricial_freqs = [norm_low_cutoff, norm_high_cutoff]

z, p, k = butter(order, Wn=cricial_freqs, btype='bandpass',output="zpk")
pole_zero(z,p,k)
z, p, k = cheby1(order, attenuation, Wn=cricial_freqs, btype='bandpass',output="zpk")
pole_zero(z,p,k)
z, p, k = cheby2(order, attenuation, Wn=cricial_freqs, btype='bandpass',output="zpk")
pole_zero(z,p,k)

def pole_zero(z, p, k):
z_x = np.real(z)
z_y = np.imag(z)

p_x = np.real(p)
p_y = np.imag(z)
... plotting code here ...


Butterworth:

Chebyshev1:

Chebyshev2:

For Chebyshev2, my zero-pole plot looks very different. What does this mean? I'm not very good at filters so I may be completely misunderstanding it, but the poles are complex, and they don't have conjugate symmetry (I think this means the filter is not fully causal?) and also some of the poles are outside of the unit circle (I think this means the filter is unstable and will blow up the input signal?)

Essentially I want to know:

1. Why is the Chebyshev2 plot so different from the others?