Sophie

Sophie

distrib > Fedora > 18 > i386 > by-pkgid > bf21b4394f4d7fa09e3626145d3315e0 > files > 435

python-matplotlib-doc-1.2.0-14.fc18.i686.rpm

.. _pylab_examples-mri_with_eeg:

pylab_examples example code: mri_with_eeg.py
============================================



.. plot:: /builddir/build/BUILD/matplotlib-1.2.0/doc/mpl_examples/pylab_examples/mri_with_eeg.py

::

    #!/usr/bin/env python
    
    """
    This now uses the imshow command instead of pcolor which *is much
    faster*
    """
    from __future__ import division, print_function
    
    import numpy as np
    
    from matplotlib.pyplot import *
    from matplotlib.collections import LineCollection
    import matplotlib.cbook as cbook
    # I use if 1 to break up the different regions of code visually
    
    if 1:   # load the data
        # data are 256x256 16 bit integers
        dfile = cbook.get_sample_data('s1045.ima.gz')
        im = np.fromstring(dfile.read(), np.uint16).astype(float)
        im.shape = 256, 256
    
    if 1: # plot the MRI in pcolor
        subplot(221)
        imshow(im, cmap=cm.gray)
        axis('off')
    
    if 1:  # plot the histogram of MRI intensity
        subplot(222)
        im = np.ravel(im)
        im = im[np.nonzero(im)] # ignore the background
        im = im/(2.0**15) # normalize
        hist(im, 100)
        xticks([-1, -.5, 0, .5, 1])
        yticks([])
        xlabel('intensity')
        ylabel('MRI density')
    
    if 1:   # plot the EEG
        # load the data
    
        numSamples, numRows = 800,4
        eegfile = cbook.get_sample_data('eeg.dat', asfileobj=False)
        print ('loading eeg %s' % eegfile)
        data = np.fromstring(open(eegfile, 'rb').read(), float)
        data.shape = numSamples, numRows
        t = 10.0 * np.arange(numSamples, dtype=float)/numSamples
        ticklocs = []
        ax = subplot(212)
        xlim(0,10)
        xticks(np.arange(10))
        dmin = data.min()
        dmax = data.max()
        dr = (dmax - dmin)*0.7 # Crowd them a bit.
        y0 = dmin
        y1 = (numRows-1) * dr + dmax
        ylim(y0, y1)
    
        segs = []
        for i in range(numRows):
            segs.append(np.hstack((t[:,np.newaxis], data[:,i,np.newaxis])))
            ticklocs.append(i*dr)
    
        offsets = np.zeros((numRows,2), dtype=float)
        offsets[:,1] = ticklocs
    
        lines = LineCollection(segs, offsets=offsets,
                               transOffset=None,
                               )
    
        ax.add_collection(lines)
    
        # set the yticks to use axes coords on the y axis
        ax.set_yticks(ticklocs)
        ax.set_yticklabels(['PG3', 'PG5', 'PG7', 'PG9'])
    
        xlabel('time (s)')
    
    show()
    

Keywords: python, matplotlib, pylab, example, codex (see :ref:`how-to-search-examples`)