function ampzmap(sys, varargin)
global AM_data_linewidth AM_ref_linewidth AM_bode_linewidth AM_thick_linewidth
global AM_normal_arrowsize AM_data_markersize AM_pzmap_markersize

% Plot poles and zeros
poles = pole(sys);
zeros = zero(sys);
plot(real(poles), imag(poles), 'bx', ...
  'MarkerSize', AM_pzmap_markersize, 'LineWidth', AM_data_linewidth);
hold on;
plot(real(zeros), imag(zeros), 'bo', ...
  'MarkerSize', AM_pzmap_markersize, 'LineWidth', AM_data_linewidth);
amaxis;					% set default fonts and sizes

if (nargin < 2)
  % 
  % Figure out the axes to use
  %
  xlims = get(gca, 'XLim');
  ylims = get(gca, 'YLim');
  
  % Make sure that we include part of the positive real axis
  if (xlims(1) > 0) xlims(1) = 0; end;
  if (xlims(2) < 0) xlims(2) = 0; end;
  if (xlims(1) == 0) xlims(1) = -xlims(2) / 4; end;
  if (xlims(2) == 0) xlims(2) = -xlims(1) / 4; end;
  
  % Handle the case with only real eigenvalues
  if (ylims(1) == 0) ylims(1) = 1/1.25; end;
  if (ylims(2) == 0) ylims(1) = 1/1.25; end;
  
  % Magnify the axis a bit to get a good looking plot
  xlims = xlims*1.5
  ylims = ylims*1.25
  
else
  amaxis(varargin{1});
  xlims = xlim;  ylims = ylim;
end

% Axis lines
arrow([xlims(1) 0], [xlims(2) 0], AM_normal_arrowsize);
arrow([0 ylims(1)], [0 ylims(2)], AM_normal_arrowsize);
axis off;

% Axis labels
amtext(xlims(2) + (xlims(2) - xlims(1))/30, (ylims(2) - ylims(1))/30, ...
  'Re', 'HorizontalAlignment', 'right', 'VerticalAlignment', 'bottom');
amtext((xlims(2) - xlims(1))/20, ylims(2) + (ylims(2) - ylims(1))/40, ...
  'Im', 'HorizontalAlignment', 'left', 'VerticalAlignment', 'top');
