On Fri, 9 Mar 2012 11:19:15 -0600
Benjamin Root <ben.r...@ou.edu> wrote:
 
> Can I have the data you used to produce these errorbars so I can test
> this bug?

Here's the data

#  Fluence.... -sigma     Signal...  -sigma       area
      1127      48.32      9.114      10.31     0.1318
 1.127e+04      482.9      35.96      16.15     0.4994
 1.127e+05       4829      231.2      101.1      2.568
 1.127e+06  4.829e+04       4631       1689      12.22

And here's the ploting tool source code (also used for generating the
linked PDF).

#!/usr/bin/env python2
# -*- coding: utf-8 -*-
# vim: filetype python

import sys, os, argparse

import math, numpy, scipy, scipy.optimize

import matplotlib, matplotlib.cm
import matplotlib.pyplot as pyplot
import pylab

def expmodel(p, x):
        return p[0] + numpy.exp(p[1]*x)*p[2]

def experror(p, x, y):
        return y - expmodel(p, x)

def linmodel(p, x):
        return p[0] + p[1]*x

def linerror(p, x, y):
        return y - linmodel(p, x)

if __name__ == '__main__':
        optparse = argparse.ArgumentParser(description='plot raddark dat files 
with errorbars and linear or exponential model regression plots', 
prog=sys.argv[0])
        optparse.add_argument('--xlabel', type=str, default='Particle Count')
        optparse.add_argument('--ylabel', type=str, default='Signal')
        optparse.add_argument('--title', type=str, default='')
        optparse.add_argument('--outlier', '-O', action='append', type=str)
        optfitgrp = optparse.add_mutually_exclusive_group()
        optfitgrp.add_argument('--exp', '-e', action='store_true')
        optfitgrp.add_argument('--lin', '-l', action='store_true')
        optparse.add_argument('--log', action='store_true')
        optparse.add_argument('files', type=str, nargs='+')

        options = optparse.parse_args(sys.argv[1:])

        data = [ numpy.loadtxt(filename) for filename in options.files ]

        if options.outlier:
                outlier = [ numpy.loadtxt(filename) for filename in 
options.outlier ]

        ax = pyplot.subplot(1,1,1)
        if options.log:
                ax.loglog()

        ax.set_title(options.title)
        ax.set_xlabel(options.xlabel)
        ax.set_ylabel(options.ylabel)
        ax.grid(True, 'both')

        for f,d in zip(options.files, data):
                ax.errorbar(d[..., 0], d[..., 2], d[..., 3], d[..., 1], 
fmt='o', label=f)

        if options.outlier:
                for f,d in zip(options.outlier, outlier):
                        ax.errorbar(d[..., 0], d[..., 2], d[..., 3], d[..., 1], 
fmt='+', label=f)

        if options.exp or options.lin:
                data_xs = numpy.concatenate( [ d[..., 0] for d in data ] )
                data_ys = numpy.concatenate( [ d[..., 2] for d in data ] )
                if options.outlier:
                        x_max = numpy.nanmax( numpy.concatenate((data_xs, 
numpy.concatenate([ o[..., 0] for o in outlier ]))) )
                        x_min = numpy.nanmin( numpy.concatenate((data_xs, 
numpy.concatenate([ o[..., 0] for o in outlier ]))) )
                else:
                        x_max = numpy.nanmax(data_xs)
                        x_min = numpy.nanmin(data_xs)
                x_ptp = x_max - x_min
                xs = numpy.arange(x_min - 0.05*x_ptp, x_max + 0.05*x_ptp, 
x_ptp/10000.)

                if options.exp:
                        p = scipy.optimize.leastsq(experror, 
[numpy.nanmin(data_ys), 1e-6/x_ptp, 1./numpy.ptp(data_ys)], args=(data_xs, 
data_ys))
                        ys = expmodel(p[0], xs)
                if options.lin:
                        p = scipy.optimize.leastsq(linerror, 
[numpy.nanmin(data_ys), 1./x_ptp, 1./numpy.ptp(data_ys)], args=(data_xs, 
data_ys))
                        ys = linmodel(p[0], xs)

                ax.plot(xs, ys, label="fit")
        
        ax.legend(loc='upper left')

        pyplot.show()

------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to