Cityplots provide a quick visual check on the sparsity pattern of the matrix,
as well as on the relative magnitude of matrix entries.

For each matrix entry a 3-dimensional bar (a 'building' in the 'city') is
drawn with it's height and color linearly scaled to the magnitude of the
value. The first row in the matrix is at the top of the cityplot and the first
column is to the left. The cityplot is drawn in perspective so the first
row appears narrower than the last row. An outline of the matrix is drawn in
the plane of an entry with zero value. For complex matrices the modulus
(absolute value) of each element is displayed.

The color bar to the right is labeled with the minimum and maximum entry
magnitudes. The tic mark indicates the zero value.

The detailed view of the cityplots has some additional labeling. The
top of the cityplots are labeled with the collection/set/matrix name. At the
bottom of the cityplot the number of rows, columns, and entries
are indicated. If necessary, the number of nonzero entries and if the
matrix is symmetric or complex is also shown. Symmetry is determined by the
header line in the Matrix Market file for that matrix except if the matrix is
purely diagonal.

The cityplot images are aliased. In other words, a stair step affect can be
seen on the narrower bars. This artifact leads to other visual artifacts,
particularly a "Moire pattern"-like affect for matrices with diagonals that
have alternating large and small values.

When the order of the matrix is much larger than the number of pixels used to
display it, the
matrix can appear denser than it is. For example, the matrix psmigr_3 is a 3140x3140
matrix with only 5.5% of its entries nonzero. However, the nonzeros are
distributed fairly uniformly, and hence when it is scaled down to be much
smaller than 3140x3140 pixels it looks quite dense.