title: "Simplest" way to graphically represent a matrix
body: <p>I am doing an assignment involving percolation--long story short, I have an array of arrays that represents a grid, and every entry is -1, 0, or 1.  I have the assignment essentially done, but one part asks for a graphical representation of the matrix using colors for each possible entry.  But from the way the assignment is worded, it sounds to me like perhaps I shouldn't be using anything not found in standard Python 2.7 and numpy.  </p>
  
  <p>I couldn't think of how to do it so I just went ahead and import pylab and plotted every coordinate as a large colored square in a scatter plot.  But I just have this nagging concern that there's a better way to do it--like there's a better package to use for this task, or like there's a way to do it with just numpy.  Suggestions?</p>
  
  <p>If it helps, my current code is below.</p>
  
  <pre><code>def show_perc(sites):
      n = sites.shape[0]
      # Blocked reps the blocked sites, etc., the 1st list holds x-coords, 2nd list holds y.
      blocked = [[],[]]
      full = [[],[]]
      vacant = [[],[]]
      # i,j are row,column, translate this to x,y coords.  Rows tell up-down etc., so needs to
      # be in 1st list, columns in 0th.  Top row 0 needs y-coord value n, row n-1 needs coord 0.
      # Column 0 needs x-coord 0, etc.
      for i in range(n):
          for j in range(n):
              if sites[i][j] &gt; 0.1:
                  vacant[0].append(j)
                  vacant[1].append(n-i)
              elif sites[i][j] &lt; -0.1:
                  full[0].append(j)
                  full[1].append(n-i)
              else:
                  blocked[0].append(j)
                  blocked[1].append(n-i)
      pl.scatter(blocked[0], blocked[1], c='black', s=30, marker='s')
      pl.scatter(full[0], full[1], c='red', s=30, marker='s')
      pl.scatter(vacant[0], vacant[1], c='white', s=30, marker='s')
      pl.axis('equal')
      pl.show()
  </code></pre>