I figured out how to do temperature plots in python. The only problem with below is that the numbers on the axis are wrong. I if I set 'extent' to be the actual extent of the axis (in this case x = [0.5,1], y = [-28,-18]) then it plots a very skinny, tall plot. So I had to correct the axis by hand later.

import matplotlib

import numpy as np

import matplotlib.cm as cm

import matplotlib.mlab as mlab

import matplotlib.pyplot as plt

import matplotlib.pyplot as plt

redbins = linspace(start = 0.5, stop = 1.0, num = 51)

rcenter = (redbins[0:-1]+redbins[1:])/2.0

mbins = linspace(start = -28, stop = -18, num = 51)

mcenter = (mbins[0:-1]+mbins[1:])/2.0

H, xedges,yedges = N.histogram2d(qsoM[dr7cut],qsored[dr7cut],bins=(mbins,redbins))

X = rcenter

Y = mcenter

Z = H

#plt.imshow(H, extent=[-3,3,-3,3], interpolation='bilinear', origin='lower')

#plt.colorbar()

plt.imshow(H, extent=[-3,3,-3,3], interpolation='nearest', origin='lower')

plt.colorbar()

xlabel('redshift (z)')

ylabel('absolute magnitude (i-band)')

title('SDSS DR7 Quasar Density')

The above code is also in the following log file: ../logs/110614log.py

You can use the aspect= keyword of imshow to get the aspect ratio to something more reasonable. For example

ReplyDeletexrange= [xmin,xmax]

yrange= [ymin,ymax]

imshow(...,aspect=(xrange[1]-xrange[0])\

(yrange[1]-yrange[0]))

will produce a 1:1 plot.

(options.betamax-options.betamin)

Thank you Anonymous! This is exactly what I need.

ReplyDelete