예제 #1
0
    def test_example10(self):
        from numpy import log10, logspace, random

        # set up some data
        x = logspace(log10(0.1), log10(10.0), 10)

        model = 1.0 / x
        yerr = 0.1 * model
        y = model + yerr * random.normal(size=x.size)

        yratio = y / model
        yratio_err = yerr / model

        # build the FramedArray.  Note the x axis
        # is set to log for all plots
        a = biggles.FramedArray(
            2,
            1,
            xlog=True,
            aspect_ratio=1.2,
            xlabel=r'$R [h^{-1} Mpc]$',
            row_fractions=[0.75, 0.25],
        )

        color = 'blue'
        sym = 'filled circle'

        mcurve = biggles.Curve(x, model)
        pts = biggles.Points(x, y, type=sym, color=color)
        epts = biggles.SymmetricErrorBarsY(x, y, yerr, color=color)

        pts.label = 'data'
        mcurve.label = '1/x'

        key = biggles.PlotKey(0.9, 0.9, [pts, mcurve], halign='right')

        a[0, 0] += pts, epts, mcurve, key
        a[0, 0].ytitle = r'$\Delta\Sigma  [M_{\odot} pc^{-2}]$'
        a[0, 0].yrange = [0.05, 20.0]
        a[0, 0].xrange = [0.05, 20.0]
        a[0, 0].ylog = True  # log y axis only for the top plot

        a[1, 0] += biggles.Points(x, yratio, type=sym, color=color, size=3)
        a[1, 0] += biggles.SymmetricErrorBarsY(x,
                                               yratio,
                                               yratio_err,
                                               color=color)
        a[1, 0] += biggles.Curve(x, x * 0 + 1)
        a[1, 0].ytitle = r'$ratio$'
        a[1, 0].yrange = [0.5, 1.5]

        _write_example(10, a)
def adddata(p, runs, data, shift):
    x = []
    y = []
    yerr = []
    allpeak = []
    themap = {}
    for r, (e, h, herr) in zip(runs, data):
        if r != None and runsummary[r].kind == "p":
            allpeak.append((e, h, herr))
        else:
            thetag = int(round(e * 2000. * 10.))
            if thetag not in themap:
                themap[thetag] = []
            themap[thetag].append((e, h, herr))
    for thetag, thelist in themap.items():
        some_energy = mean(map(lambda
                               (e, h, herr): e, thelist)) * 2. + shift / 1000.
        some_h, some_herr = wmean(map(lambda (e, h, herr): (h, herr), thelist))
        x.append(some_energy)
        y.append(some_h)
        yerr.append(some_herr)
    if allpeak != []:
        allpeak_energy = mean(map(lambda (e, h, herr): e,
                                  allpeak)) * 2. + shift / 1000.
        allpeak_h, allpeak_herr = wmean(
            map(lambda (e, h, herr): (h, herr), allpeak))
        x.append(allpeak_energy)
        y.append(allpeak_h)
        yerr.append(allpeak_herr)
    p.add(biggles.Points(x, y, symboltype="filled circle", symbolsize=0.8))
    p.add(biggles.SymmetricErrorBarsY(x, y, yerr))
    return None
예제 #3
0
def make_points(shears, biases, bias_errors, color, res):
    pts = biggles.Points(shears,
                         biases,
                         type='filled diamond',
                         color=color,
                         size=2.5)
    ptsc = biggles.Points(shears,
                          biases,
                          type='diamond',
                          color='black',
                          size=2.5)
    ptserr = biggles.SymmetricErrorBarsY(simshears,
                                         simbiases,
                                         simerrs,
                                         color=simcolor)

    if res is not None:
        xp = numpy.linspace(0, shears[-1])
        fitc = biggles.Curve(
            xp,
            res['m'] + res['alpha'] / units * xp**2,
            color=color,
        )

        fitc.label = r'$%.1f \gamma^2$' % res['alpha']
    else:
        fitc = None

    return pts, ptsc, ptserr, fitc
def addtogroupsplot(p, csfunc, offset, color, kind):
    combinemap = {}
    combinemap[0] = []
    combinemap[1] = []
    combinemap[2] = []
    combinemap[3] = []
    combinemap[4] = []
    combinemap[5] = []
    combinemap[6] = []
    combinemap[7] = []
    combinemap[8] = []
    combinemap[9] = []
    for r in testsample:
        combinemap[0].append(csfunc(r))
        combinemap[groupify(r)].append(csfunc(r))
    groups = range(1, 10)
    hadgroup = [0] * 9
    hadgroup_err = [0] * 9
    for g in groups:
        hadgroup[g - 1], hadgroup_err[g - 1] = jt.wmean(combinemap[g])
    center_of_groups = jt.wmean(combinemap[0])[0]
    tmp = biggles.Points(Numeric.array(groups) + offset,
                         Numeric.array(hadgroup) / center_of_groups,
                         type=kind,
                         color=color)
    p.add(tmp)
    p.add(
        biggles.SymmetricErrorBarsY(Numeric.array(groups) + offset,
                                    Numeric.array(hadgroup) / center_of_groups,
                                    Numeric.array(hadgroup_err) /
                                    center_of_groups,
                                    color=color))
    p.add(biggles.LineY(1., type="longdashed"))
    return tmp
def use_cross_section(csfunc, filename):
    hads = []
    hads_err = []
    for r in testsample:
        c, e = csfunc(r)
        hads.append(c)
        hads_err.append(e)
    hads_center = jt.wmean(zip(hads, hads_err))[0]

    p = biggles.FramedPlot()
    p.add(
        biggles.Points(range(len(testsample)),
                       Numeric.array(hads) / hads_center,
                       type="filled circle"))
    p.add(
        biggles.SymmetricErrorBarsY(range(len(testsample)),
                                    Numeric.array(hads) / hads_center,
                                    Numeric.array(hads_err) / hads_center))
    p.x1.draw_ticklabels = 0
    p.x1.label = "Runs by index"
    p.y1.label = "Normalized hadronic cross-section"
    p.add(biggles.LineY(1.))
    p.add(biggles.LineX(41.5, type="dashed"))
    l, r = 0.8, 1.2
    p.yrange = l, r + 0.001
    p.add(biggles.DataLabel(41.5 - 10, l + 0.15 * (r - l), "db16"))
    p.add(biggles.DataLabel(41.5 + 10, l + 0.15 * (r - l), "db17"))
    p.aspect_ratio = 8.5 / 11.
    p.show()
    p.write_eps(filename)
def compare(pseudohist, realhist, title, filetitle):
    x, y, dy = xydy(pseudohist)
    p = biggles.FramedPlot()
    p.add(biggles.Points(x, y, symboltype="filled circle", symbolsize=0.8))
    p.add(biggles.SymmetricErrorBarsY(x, y, dy))
    x, y, dy = xydy(realhist)
    p.add(
        biggles.Points(x,
                       y,
                       symboltype="filled circle",
                       symbolsize=0.8,
                       color="red"))
    p.add(biggles.SymmetricErrorBarsY(x, y, dy, color="red"))
    p.x1.label = "black=mocked up cuts, red=analysis cuts: " + title
    p.aspect_ratio = 1
    p.show()
    p.write_eps("rootstab8_pseudoreal_" + filetitle + ".eps")
def plotoverlay(histhigh, histlow, histhoff, histloff, p):
    global numbha_high, numbha_low, numbha_hoff, numbha_loff
    histhigh.rootn()
    histlow.rootn()
    histhoff.rootn()
    histloff.rootn()

    upshigh = histhigh / float(numbha_high) - histhoff / float(numbha_hoff)
    upslow = histlow / float(numbha_low) - histloff / float(numbha_loff)

    x, y, dy = upshigh.bin_centers(), upshigh.values, upshigh.errors
    p.add(biggles.Points(x, y, symboltype="filled triangle", symbolsize=0.8))
    p.add(biggles.SymmetricErrorBarsY(x, y, dy))
    x, y, dy = upslow.bin_centers(), upslow.values, upslow.errors
    p.add(biggles.Points(x, y, symboltype="inverted triangle", symbolsize=0.8))
    p.add(biggles.SymmetricErrorBarsY(x, y, dy))
    return p
예제 #8
0
def addtoplot(p, hist, color="black"):
    x = hist.bin_centers()
    y = hist.values
    dy = hist.errors
    p.add(
        biggles.Points(x,
                       y,
                       symboltype="filled circle",
                       symbolsize=1,
                       color=color))
    p.add(biggles.SymmetricErrorBarsY(x, y, dy, color=color))
    return p
예제 #9
0
파일: matlab.py 프로젝트: kirillsem/Biggles
def errorbar(x, y, e, style='ko-', show=None, p=None):
    global _matlab
    p = _matlab.get_plot(p)
    lstyle, color, mstyle = _matlab.get_style(p, style)

    p.add(biggles.SymmetricErrorBarsY(x, y, e, color=color))

    if mstyle is not None:
        p.add(biggles.Points(x, y, color=color, type=mstyle))
    if lstyle is not None:
        p.add(biggles.Curve(x, y, color=color, type=lstyle))

    if show:
        p.show()
    _matlab.LAST = p
    return p
def plotfrac(histhigh, histlow, histhoff, histloff, p):
    global numbha_high, numbha_low, numbha_hoff, numbha_loff
    histhigh.rootn()
    histlow.rootn()
    histhoff.rootn()
    histloff.rootn()

    upshigh = histhigh / float(numbha_high) - histhoff / float(numbha_hoff)
    upslow = histlow / float(numbha_low) - histloff / float(numbha_loff)
    frac = upshigh / upslow

    x, y, dy = frac.bin_centers(), frac.values, frac.errors
    ave = jt.wmean(zip(y, dy))[0]
    print ave
    p.add(biggles.Points(x, y, symboltype="filled circle", symbolsize=0.8))
    p.add(biggles.SymmetricErrorBarsY(x, y, dy))
    p.add(biggles.LineY(ave))
    return p
예제 #11
0
def test_example4():
    x = numpy.arange(0, 2 * numpy.pi, numpy.pi / 20)
    s = numpy.sin(x)

    inset = biggles.FramedPlot()
    inset.title = "inset"
    inset.frame.draw_ticks = 0

    inset.add(biggles.Curve(x, s, type="dashed"))

    p = biggles.FramedPlot()
    p.aspect_ratio = 1.
    p.frame.tickdir = +1
    p.frame.draw_spine = 0

    p.add(biggles.SymmetricErrorBarsY(x, s, [0.2] * len(x)))
    p.add(biggles.Points(x, s, color="red"))
    p.add(biggles.Inset((.6, .6), (.95, .95), inset))

    _write_example(4, p)
예제 #12
0
def plotoverlay(f, s, area, mass, wide, back, label=True, title=None):
  p = biggles.FramedPlot()
  p.add(biggles.Points(Numeric.array(scanen[s])*2000., scancs[s], symboltype="filled circle", symbolsize=0.7))
  p.add(biggles.SymmetricErrorBarsY(Numeric.array(scanen[s])*2000., scancs[s], scancs_err[s]))
  xlow = min(scanen[s])*2000. - 5.
  xhigh = max(scanen[s])*2000. + 5.
  thex = Numeric.arange(xlow, xhigh, (xhigh - xlow)/100.)
  they = Numeric.arange(xlow, xhigh, (xhigh - xlow)/100.)
  for i, x in enumerate(thex):
    they[i] = f(area, mass, wide, back, x/2000.)
  p.add(biggles.Curve(thex, they))
  p.xrange = xlow, xhigh
  p.yrange = 0., max(scancs[s]) * 1.2
  if label:
    p.x1.label = r"$E_{COM}$ in MeV"
    p.y1.label = "Relative Hadronic Cross-section"
  else:
    p.x1.draw_ticklabels = 0
    p.y1.draw_ticklabels = 0
  if title != None:
    p.x2.label = title
  return p  
        math.sqrt((float(b4) / float(n4)) * (1. - float(b4) / float(n4)) /
                  float(n4)))
    block5.append(float(b5) / float(n5))
    block5err.append(
        math.sqrt((float(b5) / float(n5)) * (1. - float(b5) / float(n5)) /
                  float(n5)))
    block6.append(float(b6) / float(n6))
    block6err.append(
        math.sqrt((float(b6) / float(n6)) * (1. - float(b6) / float(n6)) /
                  float(n6)))

p1 = biggles.FramedArray(2, 1)
p1[0,
   0].add(biggles.Points(rnum, eff, symboltype="filled circle",
                         symbolsize=0.2))
p1[0, 0].add(biggles.SymmetricErrorBarsY(rnum, eff, efferr))
p1[0, 0].add(biggles.LineY(1., linetype="dotted"))
p1[0, 0].yrange = (0.987, 1.005)
p1[0, 0].xrange = (min(rnum) - 100, max(rnum) + 100)
p1[1,
   0].add(biggles.Points(rnum, eff, symboltype="filled circle",
                         symbolsize=0.2))
p1[1, 0].add(biggles.SymmetricErrorBarsY(rnum, eff, efferr))
p1[1, 0].add(biggles.LineY(1., linetype="dotted"))
p1[1, 0].yrange = (0.8, 1.1)
p1[1, 0].xrange = (min(rnum) - 100, max(rnum) + 100)
p1.xlabel = "Run number"
p1.ylabel = "BarrelBhabha trigger efficiency"
p1[1, 0].add(biggles.PlotLabel(0.25, 0.25, "same outliers as last time"))
p1.show()
p1.write_eps("plottrig3_p1.eps")
p = biggles.FramedPlot()

xf = Numeric.arange(9460-5, 9460+5, 0.025)
yf = map(lambda xi: u1func(318.5185, 3.78739, 0.40577*nbish2nb, 0.053, 0.01864, 0., 0.0267, 0.2, 0., 0.0792, xi), xf)
p.add(biggles.Curve(xf, yf))

x = []; y = []; dy = []; dx = []; lab = []
for s in u1runs:
  x.append(ggdata[s][0]*2000. + u1shifts[s][0])
  y.append(ggdata[s][1])
  dy.append(ggdata[s][2])
  dx.append(u1shifts[s][1])
  lab.append(s)
p.add(biggles.Points(x, y, symboltype="filled circle", symbolsize=1))
p.add(biggles.SymmetricErrorBarsX(x, y, dx))
p.add(biggles.SymmetricErrorBarsY(x, y, dy))

# x = []; y = []; dy = []; dx = []; lab = []
# for s in u1runs:
#   x.append(bbindata[s][0]*2000. + u1shifts[s][0])
#   y.append(bbindata[s][1])
#   dy.append(bbindata[s][2])
#   dx.append(u1shifts[s][1])
#   lab.append(s)
# p.add(biggles.Points(x, y, symboltype="filled circle", symbolsize=1, color="blue"))
# p.add(biggles.SymmetricErrorBarsX(x, y, dx, color="blue"))
# p.add(biggles.SymmetricErrorBarsY(x, y, dy, color="blue"))

x = []; y = []; dy = []; dx = []; lab = []
for s in u1runs:
  x.append(bboutdata[s][0]*2000. + u1shifts[s][0])
예제 #15
0
c.text(
    0, 0,
    r"\sf \#$e^+e^-$ to subtract $=$ $\sigma_\Upsilon(E)$ ${\cal B}_{\mu\mu}$ $\frac{\stackrel{\displaystyle \int_{0.6}^{0.8} \cos^2\theta_+ \mbox{ } d(\cos\theta_+)}{\mbox{ }}}{\stackrel{\mbox{ }}{\displaystyle \int_{-1}^{+1} \cos^2\theta_+ \mbox{ } d(\cos\theta_+)}}$ ${\cal L}_{\gamma\gamma}$",
    [text.halign.boxcenter, text.halign.flushcenter])
c.writeEPSfile("equation.eps")

import biggles
p = biggles.Table(1, 3)
p[0, 0] = biggles.FramedPlot()
p[0, 0].add(
    biggles.Points([0, 1, 2], [317.8 / 317.8, 324.00 / 317.8, 323.16 / 317.8],
                   symboltype="filled circle",
                   symbolsize=2.))
p[0, 0].add(
    biggles.SymmetricErrorBarsY(
        [0, 1, 2], [317.8 / 317.8, 324.00 / 317.8, 323.16 / 317.8],
        [2.2 / 317.8, 1.2 / 317.8, 0.95 / 317.8]))
p[0, 0].x.ticks = [0, 1, 2]
p[0, 0].x.draw_subticks = 0
p[0, 0].x1.ticklabels = [
    r"$\gamma\gamma$", r"${e^+e^-}_{in}$", r"${e^+e^-}_{out}$"
]
p[0, 0].x1.range = [-0.5, 2.5]
p[0, 0].y1.label = r"$\Gamma_{ee}$ (normalized)"
p[0, 0].y1.range = 0.97, 1.05
p[0, 0].title = r"$\Upsilon(1S)$"

p[0, 1] = biggles.FramedPlot()
p[0, 1].add(
    biggles.Points([0, 1, 2], [133.2 / 133.2, 134.4 / 133.2, 134.02 / 133.2],
                   symboltype="filled circle",
예제 #16
0
x = []
y = []
yerr = []
n = []
for r, ru in run.iteritems():
    x.append(r)
    frac = float(ru.numer_region) / float(ru.denom_region)
    y.append(frac)
    yerr.append(math.sqrt(frac * (1. - frac) / float(ru.denom_region)))
    n.append(float(ru.denom_region))

fracerrs = biggles.FramedArray(2, 1)
fracerrs.uniform_limits = 0
fracerrs[0, 0].add(
    biggles.Points(x, y, symboltype="filled circle", symbolsize=0.5))
fracerrs[0, 0].add(biggles.SymmetricErrorBarsY(x, y, yerr))
fracerrs[0, 0].yrange = (0.99, 1.0)
fracerrs[1, 0].add(
    biggles.Points(x, y, symboltype="filled circle", symbolsize=0.5))
fracerrs[1, 0].add(biggles.SymmetricErrorBarsY(x, y, yerr))
fracerrs[1, 0].yrange = (0.8, 1.02)
fracerrs.xlabel = "Run numbers"
fracerrs.ylabel = "BhabhaBarrel trigger efficiency"
fracerrs.show()
fracerrs.write_eps("plottrig_1.eps")

ylow, nlow = zip(*filter(lambda (yi, ni): yi < 0.99, zip(y, n)))
context = biggles.FramedArray(2, 1)
context[0, 0].add(hist.h1(100, 0, 20000).fill(n).steps(True))
context[1, 0].add(biggles.Points(n, y, symboltype="dot"))
context[1, 0].add(
    1.21218927998725,
    1.21731192153008,
    5.11646554504093,
    2.40220723315513,
    5.23830942533408,
    14.1491181418469,
    12.767438367915,
    57.6641809947519,
]

p = biggles.FramedPlot()
p.add(biggles.Points(area1s, chi21s, symboltype="filled circle", symbolsize=1))
p.add(
    biggles.SymmetricErrorBarsY(area1s,
                                chi21s,
                                chi21s_err,
                                symboltype="filled circle",
                                symbolsize=1))
p.add(
    biggles.SymmetricErrorBarsX(area1s,
                                chi21s,
                                area1s_err,
                                symboltype="filled circle",
                                symbolsize=1))
for a, c, j in zip(area1s, chi21s, jit1s):
    a += 0.0005
    c += 0.002
    if j == 0.01:
        p.add(
            biggles.DataLabel(a,
                              c,
예제 #18
0
simshears = array([0.02, 0.06, 0.10])
simbiases = array([0.03, 2.064e-3 / units, 0.00581 / units], )
simerrs = array([0.31, 3.210e-04 / units, 0.000280 / units], )
simpts = biggles.Points(simshears,
                        simbiases,
                        type='filled diamond',
                        color=simcolor,
                        size=2.5)
simptsc = biggles.Points(simshears,
                         simbiases,
                         type='diamond',
                         color='black',
                         size=2.5)
simerr = biggles.SymmetricErrorBarsY(simshears,
                                     simbiases,
                                     simerrs,
                                     color=simcolor)
#simerr2=biggles.SymmetricErrorBarsY([0.02+0.00005], [0.03+0.03], [0.31], color='black')

simfitter = Fitter(simshears, simbiases * units, simerrs * units)
simfitter.go()
sim_m, sim_alpha = simfitter.result['pars']
sim_merr, sim_alphaerr = numpy.sqrt(numpy.diag(fitter.result['pars_cov']))

print("sim m + alpha g^2")
print("sim m: %g +/- %g alpha: %g +/- %g" %
      (sim_m, sim_merr, sim_alpha, sim_alphaerr))

simpts.label = 'image simulation'

#perr = biggles.SymmetricErrorBarsY(shears, m, merr)
예제 #19
0
    def doplot(self, show=False):
        """
        plot m,c vs s2n
        """
        import biggles

        xrng = [0.5 * self.s2n.min(), 1.5 * self.s2n.max()]
        mplt = biggles.FramedPlot()
        cplt = biggles.FramedPlot()

        mplt.xlabel = 'S/N'
        mplt.ylabel = 'm'
        mplt.xlog = True
        mplt.xrange = xrng

        cplt.xlabel = 'S/N'
        cplt.ylabel = 'c'
        cplt.xlog = True
        cplt.xrange = xrng

        color1 = 'blue'
        color2 = 'red'

        mcurve1 = biggles.Curve(self.s2n,
                                self.m[:, 0],
                                type='solid',
                                color=color1)
        merr1 = biggles.SymmetricErrorBarsY(self.s2n,
                                            self.m[:, 0],
                                            self.merr[:, 0],
                                            color=color1)
        mcurve2 = biggles.Curve(self.s2n,
                                self.m[:, 1],
                                type='dashed',
                                color=color2)
        merr2 = biggles.SymmetricErrorBarsY(self.s2n,
                                            self.m[:, 1],
                                            self.merr[:, 1],
                                            color=color2)

        ccurve1 = biggles.Curve(self.s2n,
                                self.c[:, 0],
                                type='solid',
                                color=color1)
        cerr1 = biggles.SymmetricErrorBarsY(self.s2n,
                                            self.c[:, 0],
                                            self.cerr[:, 0],
                                            color=color1)
        ccurve2 = biggles.Curve(self.s2n,
                                self.c[:, 1],
                                type='dashed',
                                color=color2)
        cerr2 = biggles.SymmetricErrorBarsY(self.s2n,
                                            self.c[:, 1],
                                            self.cerr[:, 1],
                                            color=color2)

        key = biggles.PlotKey(0.1, 0.9, [mcurve1, mcurve2], halign='left')

        mcurve1.label = r'$g_1$'
        mcurve2.label = r'$g_2$'
        ccurve1.label = r'$g_1$'
        ccurve2.label = r'$g_2$'

        zc = biggles.Curve(self.s2n, self.s2n * 0)

        mplt.add(mcurve1, merr1, mcurve2, merr2, zc, key)
        cplt.add(ccurve1, cerr1, ccurve2, cerr2, zc, key)

        if show:
            mplt.show()
            cplt.show()
        return mplt, cplt
예제 #20
0
파일: plotting.py 프로젝트: timj/esutil
def bscatter(xin, yin, show=True, plt=None, **keywords):
    """
    Name:
        bscatter
    Purpose:
        A wrapper to perform a quick scatter plot with biggles.  For anything
        more complex, it is better to use the object oriented interface.

    Calling Sequence:
        bscatter(x, y,
                 xerr=None,
                 yerr=None,
                 xrange=None,
                 yrange=None,
                 type='filled circle',
                 color=None,
                 xlabel=None,
                 ylabel=None,
                 label=None,
                 title=None,
                 file=None,
                 xsize=None,
                 ysize=None,
                 aspect_ratio=None,
                 show=True,
                 plt=None)

    Return value is the used biggles plot object.

    For overplotting, send an existing biggles plot object in the plt= keyword

    """

    import biggles

    if plt is None:
        plt = biggles.FramedPlot()
        xlog = keywords.get("xlog", False)
        ylog = keywords.get("ylog", False)
    else:
        xlog = plt.xlog
        ylog = plt.ylog

    pdict = {}

    # plot symbol or line type
    type = keywords.get("type", "filled circle")

    xerr = keywords.get("xerr", None)
    yerr = keywords.get("yerr", None)
    x = xin
    y = yin

    xrng = keywords.get("xrange", None)
    yrng = keywords.get("yrange", None)

    # For log, Don't plot points less than zero
    w = None
    if xlog and ylog:
        xrng = get_log_plot_range(x, err=xerr, input_range=xrng)
        yrng = get_log_plot_range(y, err=yerr, input_range=yrng)
        (w, ) = np.where((x > xrng[0]) & (y > yrng[0]))
    elif xlog:
        xrng = get_log_plot_range(x, err=xerr, input_range=xrng)
        (w, ) = np.where(x > xrng[0])
    elif ylog:
        yrng = get_log_plot_range(y, err=yerr, input_range=yrng)
        (w, ) = np.where(y > yrng[0])

    if w is not None:
        if w.size == 0:
            raise ValueError("no points > 0 for log plot")
        x = x[w]
        y = y[w]

    pkeywords = {}
    if "color" in keywords:
        pkeywords["color"] = keywords["color"]

    if "width" in keywords:
        pkeywords["width"] = keywords["width"]
    if type in [
            "solid",
            "dotted",
            "dotdashed",
            "shortdashed",
            "longdashed",
            "dotdotdashed",
            "dotdotdotdashed",
    ]:
        if "width" in keywords:
            pkeywords["width"] = keywords["width"]

        p = biggles.Curve(x, y, type=type, **pkeywords)
    else:
        size = keywords.get("size", 1)
        p = biggles.Points(x, y, type=type, size=size, **pkeywords)

    label = keywords.get("label", None)
    if label is not None:
        p.label = label

    plt.add(p)
    pdict["p"] = p

    # note for log error bars, we start with original points since
    # the bars may extend above zero even for negative points
    if yerr is not None:
        if ylog:
            pdict["p_yerr"] = add_log_error_bars(plt, "y", xin, yin, yerr,
                                                 yrng, **pkeywords)
        else:
            p_yerr = biggles.SymmetricErrorBarsY(x, y, yerr, **pkeywords)
            plt.add(p_yerr)
            pdict["p_yerr"] = p_yerr
    if xerr is not None:
        if xlog:
            pdict["p_xerr"] = add_log_error_bars(plt, "y", xin, yin, xerr,
                                                 xrng, **pkeywords)
        else:
            p_xerr = biggles.SymmetricErrorBarsX(x, y, xerr, **pkeywords)
            plt.add(p_xerr)
            pdict["p_xerr"] = p_xerr

    plt.xlog = xlog
    plt.ylog = ylog

    if xrng is not None:
        plt.xrange = xrng
    if yrng is not None:
        plt.yrange = yrng

    if "xlabel" in keywords:
        plt.xlabel = keywords["xlabel"]
    if "ylabel" in keywords:
        plt.ylabel = keywords["ylabel"]

    if "title" in keywords:
        plt.title = keywords["title"]

    if "aspect_ratio" in keywords:
        plt.aspect_ratio = keywords["aspect_ratio"]

    if "file" in keywords:
        fname = keywords["file"]
        if fname.find(".eps") != -1 or fname.find(".ps") != -1:
            plt.write_eps(fname)
        else:
            xsize = keywords.get("xsize", 512)
            ysize = keywords.get("ysize", 512)
            plt.write_img(xsize, ysize, fname)
    else:
        if show:
            plt.show()

    pdict["plt"] = plt
    if "dict" in keywords:
        if keywords["dict"]:
            return pdict
    return plt
예제 #21
0
wles_frac_err = []
for r, w in zip(runnums, wles):
  if w > 0:
    wles_frac.append(1.*w/bbinr[r])
    wles_frac_err.append(1.*w/bbinr[r]*sqrt(1./w + 1./bbinr[r]))
  else:
    wles_frac.append(0.)
    wles_frac_err.append(0.)

import biggles
p = biggles.FramedPlot()
x = map(run_date, runnums)
y = wles_frac
dy = wles_frac_err
p.add(biggles.Points(x, y, symboltype="filled circle", symbolsize=0.8))
p.add(biggles.SymmetricErrorBarsY(x, y, dy))

subticks = []
sublabels = []
for t, l in zip(dticks, dlabels):
  if min(x)-7.*24.*60.*60. < t < max(x)+7.*24.*60.*60.:
    subticks.append(t)
    sublabels.append(l)
subsubticks = []
for t in dsubticks:
  if min(x)-7.*24.*60.*60. < t < max(x)+7.*24.*60.*60.:
    subsubticks.append(t)
p.x1.ticks = subticks
p.x1.subticks = subsubticks
p.x1.ticklabels = sublabels
p.x2.ticks = subticks
예제 #22
0
    def plot_m_c_vs(self,
                    res,
                    name,
                    xlog=True,
                    show=False,
                    combine=False,
                    xrng=None):
        """
        result from fit_m_c_vs

        parameters
        ----------
        res: dict
            result from running fit_m_c_vs
        name: string
            Name for the variable binned against, e.g. s/n or whatever
            This is used for the x axis
        xlog: bool, optional
            If True, use a log x axis
        show: bool, optional
            If True, show the plot on the screen

        returns
        -------
        biggles plot object
        """

        import biggles
        biggles.configure('default', 'fontsize_min', 2.0)
        tab = biggles.Table(2, 1)

        xvals = res['mean']

        if xrng is None:
            if xlog:
                xrng = [0.5 * xvals.min(), 1.5 * xvals.max()]
            else:
                xrng = [0.9 * xvals.min(), 1.1 * xvals.max()]

        mplt = biggles.FramedPlot()
        mplt.xlabel = name
        mplt.ylabel = 'm'
        mplt.xrange = xrng
        mplt.yrange = [-0.01, 0.01]
        mplt.xlog = xlog

        cplt = biggles.FramedPlot()
        cplt.xlabel = name
        cplt.ylabel = 'c'
        cplt.xrange = xrng
        cplt.yrange = [-0.0015, 0.0015]
        cplt.xlog = xlog

        if combine:

            m = 0.5 * (res['m1'] + res['m2'])
            c = 0.5 * (res['c1'] + res['c2'])

            merr = array([
                min(m1err, m2err)
                for m1err, m2err in zip(res['m1err'], res['m2err'])
            ])
            cerr = array([
                min(c1err, c2err)
                for c1err, c2err in zip(res['c1err'], res['c2err'])
            ])

            merr /= sqrt(2)
            cerr /= sqrt(2)

            mc = biggles.Points(xvals, m, type='filled circle', color='blue')
            merrc = biggles.SymmetricErrorBarsY(xvals, m, merr, color='blue')

            cc = biggles.Points(xvals, c, type='filled circle', color='blue')
            cerrc = biggles.SymmetricErrorBarsY(xvals, c, cerr, color='blue')

            zc = biggles.Curve(xrng, [0, 0])

            mplt.add(zc, mc, merrc)
            cplt.add(zc, cc, cerrc)

        else:
            m1c = biggles.Points(xvals,
                                 res['m1'],
                                 type='filled circle',
                                 color='blue')
            m1c.label = 'm1'
            m1errc = biggles.SymmetricErrorBarsY(xvals,
                                                 res['m1'],
                                                 res['m1err'],
                                                 color='blue')

            m2c = biggles.Points(xvals,
                                 res['m2'],
                                 type='filled circle',
                                 color='red')
            m2c.label = 'm2'
            m2errc = biggles.SymmetricErrorBarsY(xvals,
                                                 res['m2'],
                                                 res['m2err'],
                                                 color='red')
            mkey = biggles.PlotKey(0.9, 0.9, [m1c, m2c], halign='right')

            c1c = biggles.Points(xvals,
                                 res['c1'],
                                 type='filled circle',
                                 color='blue')
            c1c.label = 'c1'
            c1errc = biggles.SymmetricErrorBarsY(xvals,
                                                 res['c1'],
                                                 res['c1err'],
                                                 color='blue')

            c2c = biggles.Points(xvals,
                                 res['c2'],
                                 type='filled circle',
                                 color='red')
            c2c.label = 'c2'
            c2errc = biggles.SymmetricErrorBarsY(xvals,
                                                 res['c2'],
                                                 res['c2err'],
                                                 color='red')
            ckey = biggles.PlotKey(0.9, 0.9, [c1c, c2c], halign='right')

            zc = biggles.Curve(xvals, xvals * 0)

            mplt.add(zc, m1c, m1errc, m2c, m2errc, mkey)

            cplt.add(zc, c1c, c1errc, c2c, c2errc, ckey)

        tab[0, 0] = mplt
        tab[1, 0] = cplt

        if show:
            tab.show()
        return tab
  b.append(tmp)
  berr.append(math.sqrt(tmp*(1.-tmp)/float(den)))

  num = 0
  den = 0
  for i in range(76, 82):
    for j in range(59, 62):
      num += run[r].numer[i,j]
      den += run[r].denom[i,j]
  tmp = float(num)/float(den)
  c.append(tmp)
  cerr.append(math.sqrt(tmp*(1.-tmp)/float(den)))

p = biggles.FramedArray(3,1)
p[0,0].add(biggles.Points(runnumbers, a, symboltype="filled circle", symbolsize=0.5))
p[0,0].add(biggles.SymmetricErrorBarsY(runnumbers, a, aerr))
p[0,0].yrange = (0., 1.1)
p[1,0].add(biggles.Points(runnumbers, b, symboltype="filled circle", symbolsize=0.5))
p[1,0].add(biggles.SymmetricErrorBarsY(runnumbers, b, berr))
p[1,0].yrange = (0., 1.1)
p[2,0].add(biggles.Points(runnumbers, c, symboltype="filled circle", symbolsize=0.5))
p[2,0].add(biggles.SymmetricErrorBarsY(runnumbers, c, cerr))
p[2,0].yrange = (0., 1.1)
p.xlabel = r"$\epsilon$ of blocks A, B, C versus run"

p[0,0].add(biggles.LineX(122354, linetype="longdashed"))
p[1,0].add(biggles.LineX(122354, linetype="longdashed"))
p[2,0].add(biggles.LineX(122354, linetype="longdashed"))
p[2,0].add(biggles.DataLabel(122354+70, 0.2, "122354 (in 3S db17)", texthalign="left"))

p[0,0].add(biggles.LineX(123490, linetype="longdashed"))
예제 #24
0
#!/usr/bin/env python

import sys
sys.path.insert(1,'..')

import biggles
import math, numpy 

x = numpy.arange( 0, 2*math.pi, math.pi/20 )
s = numpy.sin(x)
c = numpy.cos(x)

inset = biggles.FramedPlot()
inset.title = "inset"
inset.frame.draw_ticks = 0

inset.add( biggles.Curve(x, s, type="dashed") )

p = biggles.FramedPlot()
p.aspect_ratio = 1.
p.frame.tickdir = +1
p.frame.draw_spine = 0

p.add( biggles.SymmetricErrorBarsY(x, s, [0.2]*len(x)) )
p.add( biggles.Points(x, s, color="red") )
p.add( biggles.Inset((.6,.6), (.95,.95), inset) )

#p.write_img( 400, 400, "example4.png" )
#p.write_eps( "example4.eps" )
p.show()
    frac = float(num) / float(den)
    correction_factor_err.append(math.sqrt(frac * (1. - frac) / float(den)))

    corhist = (runrec[r].gamgam_cotT /
               runrec[r].bhabha_cotTnumer.divide_by_superset(
                   runrec[r].bhabha_cotTdenom))
    den = corhist.sum(0.1, 1.23)
    num = runrec[r].gamgam_cotT.sum(0.1, 1.23)
    frac = float(num) / float(den)
    correction_factor.append(frac)

p = biggles.FramedArray(1, 2)
p[0, 0].add(biggles.Points(testsample, correction_factor,
                           type="filled circle"))
p[0, 0].add(
    biggles.SymmetricErrorBarsY(testsample, correction_factor,
                                correction_factor_err))
p[0, 0].yrange = 0.98, 1.
p[0, 0].xrange = 121400, 123200
p[0, 0].add(biggles.LineX(122226, type="longdashed"))
p[0, 1].add(biggles.Points(testsample, correction_factor,
                           type="filled circle"))
p[0, 1].add(
    biggles.SymmetricErrorBarsY(testsample, correction_factor,
                                correction_factor_err))
p[0, 1].yrange = 0.98, 1.
p[0, 1].xrange = 128102, 128164
p.aspect_ratio = 8.5 / 11. / 2.
p.xlabel = "Run Number"
p.ylabel = "BhabhaBarrel trigger efficiency"
p[0, 0].add(biggles.PlotLabel(0.25, 0.1, "db16"))
p[0, 0].add(biggles.PlotLabel(0.75, 0.1, "db17"))
예제 #26
0
# is set to log for all plots
a = biggles.FramedArray(
    2,
    1,
    xlog=True,
    aspect_ratio=1.2,
    xlabel=r'$R [h^{-1} Mpc]$',
    row_fractions=[0.75, 0.25],
)

color = 'blue'
sym = 'filled circle'

mcurve = biggles.Curve(x, model)
pts = biggles.Points(x, y, type=sym, color=color)
epts = biggles.SymmetricErrorBarsY(x, y, yerr, color=color)

pts.label = 'data'
mcurve.label = '1/x'

key = biggles.PlotKey(0.9, 0.9, [pts, mcurve], halign='right')
a[0, 0] += pts, epts, mcurve, key
a[0, 0].ytitle = r'$\Delta\Sigma  [M_{\odot} pc^{-2}]$'
a[0, 0].yrange = [0.05, 20.0]
a[0, 0].xrange = [0.05, 20.0]
a[0, 0].ylog = True  # log y axis only for the top plot

a[1, 0] += biggles.Points(x, yratio, type=sym, color=color, size=3)
a[1, 0] += biggles.SymmetricErrorBarsY(x, yratio, yratio_err, color=color)
a[1, 0] += biggles.Curve(x, x * 0 + 1)
a[1, 0].ytitle = r'$ratio$'
예제 #27
0
def bscatter(xin, yin, show=True, plt=None, **keywords):
    """
    Name:
        bscatter
    Purpose:
        A wrapper to perform a quick scatter plot with biggles.  For anything
        more complex, it is better to use the object oriented interface.

    Calling Sequence:
        bscatter(x, y, 
                 xerr=None, 
                 yerr=None,
                 xrange=None,
                 yrange=None,
                 type='filled circle', 
                 color=None,
                 xlabel=None, 
                 ylabel=None, 
                 label=None,
                 title=None,
                 file=None, 
                 xsize=None, 
                 ysize=None,
                 aspect_ratio=None,
                 show=True,
                 plt=None)

    Return value is the used biggles plot object.

    For overplotting, send an existing biggles plot object in the plt= keyword

    """

    import biggles
    if plt is None:
        plt = biggles.FramedPlot()
        xlog = keywords.get('xlog', False)
        ylog = keywords.get('ylog', False)
    else:
        xlog = plt.xlog
        ylog = plt.ylog

    pdict = {}

    # plot symbol or line type
    type = keywords.get('type', 'filled circle')

    xerr = keywords.get('xerr', None)
    yerr = keywords.get('yerr', None)
    x = xin
    y = yin

    xrng = keywords.get('xrange', None)
    yrng = keywords.get('yrange', None)

    # For log, Don't plot points less than zero
    w = None
    if xlog and ylog:
        xrng = get_log_plot_range(x, err=xerr, input_range=xrng)
        yrng = get_log_plot_range(y, err=yerr, input_range=yrng)
        w, = numpy.where((x > xrng[0]) & (y > yrng[0]))
    elif xlog:
        xrng = get_log_plot_range(x, err=xerr, input_range=xrng)
        w, = numpy.where(x > xrng[0])
    elif ylog:
        yrng = get_log_plot_range(y, err=yerr, input_range=yrng)
        w, = numpy.where(y > yrng[0])

    if w is not None:
        if w.size == 0:
            raise ValueError("no points > 0 for log plot")
        x = x[w]
        y = y[w]

    pkeywords = {}
    if 'color' in keywords:
        pkeywords['color'] = keywords['color']

    if 'width' in keywords:
        pkeywords['width'] = keywords['width']
    if type in [
            "solid", "dotted", "dotdashed", "shortdashed", "longdashed",
            "dotdotdashed", "dotdotdotdashed"
    ]:
        if 'width' in keywords:
            pkeywords['width'] = keywords['width']

        p = biggles.Curve(x, y, type=type, **pkeywords)
    else:
        size = keywords.get('size', 1)
        p = biggles.Points(x, y, type=type, size=size, **pkeywords)

    label = keywords.get('label', None)
    if label is not None:
        p.label = label

    plt.add(p)
    pdict['p'] = p

    # note for log error bars, we start with original points since
    # the bars may extend above zero even for negative points
    if yerr is not None:
        if ylog:
            pdict['p_yerr'] = add_log_error_bars(plt, 'y', xin, yin, yerr,
                                                 yrng, **pkeywords)
            #p_yerr = add_log_error_bars(plt, 'y', xin, yin, yerr, yrng, **pkeywords)
        else:
            p_yerr = biggles.SymmetricErrorBarsY(x, y, yerr, **pkeywords)
            plt.add(p_yerr)
            pdict['p_yerr'] = p_yerr
    if xerr is not None:
        if xlog:
            pdict['p_xerr'] = add_log_error_bars(plt, 'y', xin, yin, xerr,
                                                 xrng, **pkeywords)
            #p_xerr = add_log_error_bars(plt, 'y', xin, yin, xerr, xrng, **pkeywords)
        else:
            p_xerr = biggles.SymmetricErrorBarsX(x, y, xerr, **pkeywords)
            plt.add(p_xerr)
            pdict['p_xerr'] = p_xerr

    plt.xlog = xlog
    plt.ylog = ylog

    if xrng is not None:
        plt.xrange = xrng
    if yrng is not None:
        plt.yrange = yrng

    if 'xlabel' in keywords:
        plt.xlabel = keywords['xlabel']
    if 'ylabel' in keywords:
        plt.ylabel = keywords['ylabel']

    if 'title' in keywords:
        plt.title = keywords['title']

    if 'aspect_ratio' in keywords:
        plt.aspect_ratio = keywords['aspect_ratio']

    if 'file' in keywords:
        fname = keywords['file']
        if fname.find('.eps') != -1 or fname.find('.ps') != -1:
            plt.write_eps(fname)
        else:
            xsize = keywords.get('xsize', 512)
            ysize = keywords.get('ysize', 512)
            plt.write_image(xsize, ysize, fname)
    else:
        if show:
            plt.show()

    pdict['plt'] = plt
    if 'dict' in keywords:
        if keywords['dict']:
            return pdict
    return plt
예제 #28
0
    def test_labels(self):
        import numpy
        from numpy import linspace

        key = biggles.PlotKey(0.1, 0.9, halign='left')

        plt = biggles.FramedPlot(key=key, aspect_ratio=1)

        err = 0.1
        x = numpy.arange(10)
        y = numpy.arange(10)**2

        err = numpy.zeros(x.size) + 2
        ydata = y + numpy.random.normal(size=x.size) * err

        color = 'red'
        pts = biggles.Points(x,
                             ydata,
                             color=color,
                             type='filled diamond',
                             label='data')
        errpts = biggles.SymmetricErrorBarsY(x,
                                             ydata,
                                             err,
                                             color=color,
                                             label='data')

        model = biggles.Curve(x, y, label='model')

        plt += biggles.Polygon([0, 8, 4], [0, 0, 30],
                               color='grey20',
                               label='triangle')

        plt += [model, pts, errpts]

        plt += biggles.Point(4,
                             4,
                             type='filled circle',
                             color='cyan',
                             label='other')

        # Go from light blue to intense red.
        np = 30
        xp = linspace(0.5, 4, np)
        yp = 20 + 5 * xp.copy()
        minColor = [0.6, 0.9, 1.0]
        maxColor = [1.0, 0.2, 0.2]

        colors = numpy.zeros((np, 3))
        colors[:, 0] = numpy.interp(xp, xp,
                                    linspace(minColor[0], maxColor[0], np))
        colors[:, 1] = numpy.interp(xp, xp,
                                    linspace(minColor[1], maxColor[1], np))
        colors[:, 2] = numpy.interp(xp, xp,
                                    linspace(minColor[2], maxColor[2], np))

        plt += biggles.ColoredPoints(
            xp,
            yp,
            colors,
            type='cross',
            size=1,
            label='grad',
        )

        plt += biggles.LineX(5, color='green', label='lineY')
        plt += biggles.LineY(5, color='magenta', type='dashed', label='lineX')

        plt += biggles.Slope(-3, (0, 40), color='Hot Pink', label='slope')

        plt += biggles.DataBox([5.5, 70], [6.5, 80],
                               color='Dodger Blue',
                               label='box')

        # label doesn't work, nor does ellipses.  fundamental perhaps
        #plt += Circle(6.0, 75.0, 1,  color='yellow', label='circle')

        # not even sure how DataArc works
        #plt += DataArc(6.0, 75.0, 1,  color='yellow', label='circle')

        _write_example('labels', plt)
m.minos()
print m

xx = Numeric.arange(4.6, 5.3, 0.1)
yy = Numeric.arange(4.6, 5.3, 0.1)
for i, xi in enumerate(xx):
    yy[i] = 762.4 * xi / (10355.2 / 2000.)

xxx = Numeric.arange(4.6, 5.3, 0.1)
yyy = Numeric.arange(4.6, 5.3, 0.1)
for i, xi in enumerate(xxx):
    yyy[i] = line(xi, m.values[0], m.values[1])

p = biggles.FramedPlot()
p.add(biggles.Points(x, y, symboltype="filled circle", symbolsize=2.))
p.add(biggles.SymmetricErrorBarsY(x, y, yerr))
p.add(biggles.Curve(xx, yy))
p.add(biggles.Curve(xxx, yyy, linetype="longdashed"))
p.xrange = 4.6, 5.3
p.x.ticks = [4.6, 4.7, 4.8, 4.9, 5.0, 5.1, 5.2, 5.3]
p.x2.draw_ticklabels = 0
p.yrange = 500., 800.
p.aspect_ratio = 1.
p.x1.label = r"Single-beam energy in GeV"
p.y1.label = r"$\sigma_E/E$ $\times$ 10$^{6}$"
p.show()
p.write_eps("/home/mccann/antithesis/clns/beamenergyspread.eps")

#######################################################

# print jt.stdev([0.12, 0.27, 0.12, 0.03, 0.08, 0.06, 0.11, 0.28, 0.45, 0.39, 0.22, 0.37])*sqrt(12./11.)