コード例 #1
0
class pdf_class:
    def __init__(self, filename):
        self._canvas = TCanvas("canvas", "canvas", 800, 450)
        self._canvas.cd()
        self._pad = TPad("pad", "", 0, 0, 1, 0.95)
        self._pdf = TPDF("%s.pdf" % filename)

        self._subCanvas = 0
        self._nCanvasPerPage = 0
        self._nx = 1
        self._ny = 1

    def newPage(self, headerText="", nx=1, ny=1, sameHeader=False):
        if self._subCanvas != 0:
            self._pad.Draw()
            self._canvas.cd()
            self._canvas.Update()
            self._pdf.NewPage()

        self._pad.Clear()
        self._canvas.cd()
        if not sameHeader:
            self._nx = nx
            self._ny = ny
            self._header = TPaveText(0, 0.95, 1, 1)
            self._header.SetFillColor(0)
            self._header.SetTextColor(1)
            self._header.SetTextFont(22)
            self._header.AddText(headerText)
            self._header.AddLine(0.0, 0.95, 1.0, 0.95)
        self._header.Draw()
        self._pad.cd()
        self._pad.Divide(self._nx, self._ny)
        self._pad.SetGrid(0, 0)
        self._nCanvasPerPage = self._nx * self._ny
        self._subCanvas = 0

    def newLegend(self, header="", lx=0.8, ly=0.8, ux=0.9, uy=0.88):
        self._legend = TLegend(lx, ly, ux, uy)
        self._legend.SetFillColor(0)
        self._legend.SetBorderSize(0)
        self._legend.SetTextFont(132)
        self._legend.SetTextSize(0.035)
        if header != "": self._legend.SetHeader(header)

    def draw(self,
             hists,
             legend=False,
             drawOpt="",
             logx=False,
             logy=False,
             logz=False):
        if self._subCanvas + 1 > self._nCanvasPerPage:
            self.newPage(sameHeader=True)

        self._subCanvas += 1
        self._pad.cd(self._subCanvas)
        first = 1
        for h in hists:
            if first == 1:
                first = 0
                h.Draw(drawOpt)
            else:
                h.Draw("same%s" % drawOpt)
            if legend: self._legend.AddEntry(h, h.GetTitle(), "LP")

        if legend: self._legend.Draw()
        if logx: self._pad.cd(self._subCanvas).SetLogx()
        if logy: self._pad.cd(self._subCanvas).SetLogy()
        if logz: self._pad.cd(self._subCanvas).SetLogz()

        self._canvas.cd()
        self._canvas.Update()
        self._pad.Draw()

    def close(self):
        self._pad.Draw()
        self._canvas.cd()
        self._canvas.Update()
        self._pdf.Close()