How are these pole zero plots created Back around 5 BC, where C stands for the programming language, engineers would photograph their oscilloscope's display to record their test results.

This appears to be such a photograph, taken from this Wikipedia article on Elliptic filters. 



The photo is described as follows:

Log of the absolute value of the gain of an 8th order elliptic filter in complex frequency space. The white spots are poles and the black spots are zeroes. There are a total of 16 poles and 8 double zeroes. What appears to be a single pole and zero near the transition region is actually four poles and two double zeroes as shown in the expanded view below. In this image, black corresponds to a gain of 0.0001 or less and white corresponds to a gain of 10 or more.

I have seen plots like this many times and always wondered how they were created. In other words, what methods and equipment were used to do this? They even show poles in the RHP, which doesn't make much sense.
You can follow the links to the Mathematica source code, copy-pasted here:

xp2[xi_] := 
  Module[{g, num, den}, g = Sqrt[4*xi^2 + (4*xi^2*(xi^2 - 1))^(2/3)];
   num = 2*xi^2*Sqrt[g];
   den = Sqrt[8*xi^2*(xi^2 + 1) + 12*g*xi^2 - g^3] - Sqrt[g^3];
   num/den];
xz2[xi_] := xi^2/xp2[xi];

t[xi_] := Sqrt[1 - 1/xi^2];

(*Use particular values for low-order functions*)
r1[xi_, x_] := x;
r2[xi_, x_] := ((t[xi] + 1)*x^2 - 1)/((t[xi] - 1)*x^2 + 1);
r3[xi_, x_] := 
  x*((1 - xp2[xi])*(x^2 - xz2[xi]))/((1 - xz2[xi])*(x^2 - xp2[xi]));

(*Use nesting property for higher-degree functions*)
r4[xi_, x_] := r2[r2[xi, xi], r2[xi, x]];
r8[xi_, x_] := r4[r2[xi, xi], r2[xi, x]];

ellgain[xi_, w_, w0_, ep_] := 1/Sqrt[1 + ep^2*r8[xi, w/w0]^2];

DensityPlot[
 w0 = 1;
 ep = 0.5;
 xi = 1.05;
 min = 0.0001;
 max = 10;

 Log[Abs[
   ellgain[xi, sig + I*w, w0*I, ep]
   ]],
 {sig, -4, 4},
 {w, -4, 4},
 PlotRange -&gt; {Log[min], Log[max]},
 PlotPoints -&gt; 100,
 ColorFunction -&gt; GrayLevel,
 ClippingStyle -&gt; {Black, White}
 ]