CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
plotting.FrameRatio Class Reference

Public Member Functions

def __init__ (self, pad, bounds, zmax, ratioBounds, ratioFactor, nrows, xbinlabels=None, xbinlabelsize=None, xbinlabeloption=None, ratioYTitle=_ratioYTitle)
 
def adjustMarginLeft (self, adjust)
 
def adjustMarginRight (self, adjust)
 
def redrawAxis (self)
 
def setGridx (self, grid)
 
def setGridy (self, grid)
 
def setLogx (self, log)
 
def setLogy (self, log)
 
def setTitle (self, title)
 
def setXLabelSize (self, size)
 
def setXTitle (self, title)
 
def setXTitleOffset (self, offset)
 
def setXTitleSize (self, size)
 
def setYTitle (self, title)
 
def setYTitleOffset (self, offset)
 
def setYTitleRatio (self, title)
 
def setYTitleSize (self, size)
 

Private Attributes

 _coverPad
 
 _frame
 
 _frameRatio
 
 _pad
 
 _padRatio
 
 _parentPad
 

Detailed Description

Class for creating and managing a frame for a ratio plot with two subpads

Definition at line 1309 of file plotting.py.

Constructor & Destructor Documentation

def plotting.FrameRatio.__init__ (   self,
  pad,
  bounds,
  zmax,
  ratioBounds,
  ratioFactor,
  nrows,
  xbinlabels = None,
  xbinlabelsize = None,
  xbinlabeloption = None,
  ratioYTitle = _ratioYTitle 
)

Definition at line 1311 of file plotting.py.

1311  def __init__(self, pad, bounds, zmax, ratioBounds, ratioFactor, nrows, xbinlabels=None, xbinlabelsize=None, xbinlabeloption=None, ratioYTitle=_ratioYTitle):
1312  self._parentPad = pad
1313  self._pad = pad.cd(1)
1314  if xbinlabels is not None:
1315  self._frame = _drawFrame(self._pad, bounds, zmax, [""]*len(xbinlabels))
1316  else:
1317  self._frame = _drawFrame(self._pad, bounds, zmax)
1318  self._padRatio = pad.cd(2)
1319  self._frameRatio = _drawFrame(self._padRatio, ratioBounds, zmax, xbinlabels, xbinlabelsize, xbinlabeloption)
1320 
1321  self._frame.GetXaxis().SetLabelSize(0)
1322  self._frame.GetXaxis().SetTitleSize(0)
1323 
1324  yoffsetFactor = ratioFactor
1325  divisionPoint = 1-1/ratioFactor
1326  xoffsetFactor = 1/divisionPoint #* 0.6
1327 
1328  if nrows == 1:
1329  xoffsetFactor *= 0.6
1330  elif nrows == 2:
1331  yoffsetFactor *= 2
1332  xoffsetFactor *= 1.5
1333  elif nrows == 3:
1334  yoffsetFactor *= 4
1335  xoffsetFactor *= 2.3
1336  elif nrows >= 4:
1337  yoffsetFactor *= 5
1338  xoffsetFactor *= 3
1339 
1340  self._frame.GetYaxis().SetTitleOffset(self._frameRatio.GetYaxis().GetTitleOffset()*yoffsetFactor)
1341  self._frameRatio.GetYaxis().SetLabelSize(int(self._frameRatio.GetYaxis().GetLabelSize()*0.8))
1342  self._frameRatio.GetYaxis().SetTitleOffset(self._frameRatio.GetYaxis().GetTitleOffset()*yoffsetFactor)
1343  self._frameRatio.GetXaxis().SetTitleOffset(self._frameRatio.GetXaxis().GetTitleOffset()*xoffsetFactor)
1344 
1345  self._frameRatio.GetYaxis().SetNdivisions(4, 5, 0)
1346 
1347  self._frameRatio.GetYaxis().SetTitle(ratioYTitle)
1348 
def _drawFrame(pad, bounds, zmax=None, xbinlabels=None, xbinlabelsize=None, xbinlabeloption=None, ybinlabels=None, suffix="")
Definition: plotting.py:1184
def __init__(self, pad, bounds, zmax, ratioBounds, ratioFactor, nrows, xbinlabels=None, xbinlabelsize=None, xbinlabeloption=None, ratioYTitle=_ratioYTitle)
Definition: plotting.py:1311

Member Function Documentation

def plotting.FrameRatio.adjustMarginLeft (   self,
  adjust 
)

Definition at line 1364 of file plotting.py.

1364  def adjustMarginLeft(self, adjust):
1365  self._pad.SetLeftMargin(self._pad.GetLeftMargin()+adjust)
1366  self._padRatio.SetLeftMargin(self._padRatio.GetLeftMargin()+adjust)
1367  # Need to redraw frame after adjusting the margin
1368  self._pad.cd()
1369  self._frame.Draw("")
1370  self._padRatio.cd()
1371  self._frameRatio.Draw("")
1372 
def adjustMarginLeft(self, adjust)
Definition: plotting.py:1364
def plotting.FrameRatio.adjustMarginRight (   self,
  adjust 
)

Definition at line 1373 of file plotting.py.

1373  def adjustMarginRight(self, adjust):
1374  self._pad.SetRightMargin(self._pad.GetRightMargin()+adjust)
1375  self._padRatio.SetRightMargin(self._padRatio.GetRightMargin()+adjust)
1376  # Need to redraw frames after adjusting the margin
1377  self._pad.cd()
1378  self._frame.Draw("")
1379  self._padRatio.cd()
1380  self._frameRatio.Draw("")
1381 
def adjustMarginRight(self, adjust)
Definition: plotting.py:1373
def plotting.FrameRatio.redrawAxis (   self)

Definition at line 1411 of file plotting.py.

1411  def redrawAxis(self):
1412  self._padRatio.RedrawAxis()
1413  self._pad.RedrawAxis()
1414 
1415  self._parentPad.cd()
1416 
1417  # pad to hide the lowest y axis label of the main pad
1418  xmin=0.065
1419  ymin=0.285
1420  xmax=0.128
1421  ymax=0.33
1422  self._coverPad = ROOT.TPad("coverpad", "coverpad", xmin, ymin, xmax, ymax)
1423  self._coverPad.SetBorderMode(0)
1424  self._coverPad.Draw()
1425 
1426  self._pad.cd()
1427  self._pad.Pop() # Move the first pad on top
1428 
def redrawAxis(self)
Definition: plotting.py:1411
def plotting.FrameRatio.setGridx (   self,
  grid 
)

Definition at line 1356 of file plotting.py.

1356  def setGridx(self, grid):
1357  self._pad.SetGridx(grid)
1358  self._padRatio.SetGridx(grid)
1359 
def setGridx(self, grid)
Definition: plotting.py:1356
def plotting.FrameRatio.setGridy (   self,
  grid 
)

Definition at line 1360 of file plotting.py.

1360  def setGridy(self, grid):
1361  self._pad.SetGridy(grid)
1362  self._padRatio.SetGridy(grid)
1363 
def setGridy(self, grid)
Definition: plotting.py:1360
def plotting.FrameRatio.setLogx (   self,
  log 
)

Definition at line 1349 of file plotting.py.

1349  def setLogx(self, log):
1350  self._pad.SetLogx(log)
1351  self._padRatio.SetLogx(log)
1352 
def setLogx(self, log)
Definition: plotting.py:1349
def plotting.FrameRatio.setLogy (   self,
  log 
)

Definition at line 1353 of file plotting.py.

1353  def setLogy(self, log):
1354  self._pad.SetLogy(log)
1355 
def setLogy(self, log)
Definition: plotting.py:1353
def plotting.FrameRatio.setTitle (   self,
  title 
)

Definition at line 1382 of file plotting.py.

1382  def setTitle(self, title):
1383  self._frame.SetTitle(title)
1384 
def setTitle(self, title)
Definition: plotting.py:1382
def plotting.FrameRatio.setXLabelSize (   self,
  size 
)

Definition at line 1394 of file plotting.py.

1394  def setXLabelSize(self, size):
1395  self._frameRatio.GetXaxis().SetLabelSize(size)
1396 
def setXLabelSize(self, size)
Definition: plotting.py:1394
def plotting.FrameRatio.setXTitle (   self,
  title 
)

Definition at line 1385 of file plotting.py.

1385  def setXTitle(self, title):
1386  self._frameRatio.GetXaxis().SetTitle(title)
1387 
def setXTitle(self, title)
Definition: plotting.py:1385
def plotting.FrameRatio.setXTitleOffset (   self,
  offset 
)

Definition at line 1391 of file plotting.py.

1391  def setXTitleOffset(self, offset):
1392  self._frameRatio.GetXaxis().SetTitleOffset(offset)
1393 
def setXTitleOffset(self, offset)
Definition: plotting.py:1391
def plotting.FrameRatio.setXTitleSize (   self,
  size 
)

Definition at line 1388 of file plotting.py.

1388  def setXTitleSize(self, size):
1389  self._frameRatio.GetXaxis().SetTitleSize(size)
1390 
def setXTitleSize(self, size)
Definition: plotting.py:1388
def plotting.FrameRatio.setYTitle (   self,
  title 
)

Definition at line 1397 of file plotting.py.

1397  def setYTitle(self, title):
1398  self._frame.GetYaxis().SetTitle(title)
1399 
def setYTitle(self, title)
Definition: plotting.py:1397
def plotting.FrameRatio.setYTitleOffset (   self,
  offset 
)

Definition at line 1407 of file plotting.py.

1407  def setYTitleOffset(self, offset):
1408  self._frame.GetYaxis().SetTitleOffset(offset)
1409  self._frameRatio.GetYaxis().SetTitleOffset(offset)
1410 
def setYTitleOffset(self, offset)
Definition: plotting.py:1407
def plotting.FrameRatio.setYTitleRatio (   self,
  title 
)

Definition at line 1400 of file plotting.py.

1400  def setYTitleRatio(self, title):
1401  self._frameRatio.GetYaxis().SetTitle(title)
1402 
def setYTitleRatio(self, title)
Definition: plotting.py:1400
def plotting.FrameRatio.setYTitleSize (   self,
  size 
)

Definition at line 1403 of file plotting.py.

1403  def setYTitleSize(self, size):
1404  self._frame.GetYaxis().SetTitleSize(size)
1405  self._frameRatio.GetYaxis().SetTitleSize(size)
1406 
def setYTitleSize(self, size)
Definition: plotting.py:1403

Member Data Documentation

plotting.FrameRatio._coverPad
private

Definition at line 1422 of file plotting.py.

plotting.FrameRatio._frame
private

Definition at line 1315 of file plotting.py.

plotting.FrameRatio._frameRatio
private

Definition at line 1319 of file plotting.py.

plotting.FrameRatio._pad
private

Definition at line 1313 of file plotting.py.

plotting.FrameRatio._padRatio
private

Definition at line 1318 of file plotting.py.

plotting.FrameRatio._parentPad
private

Definition at line 1312 of file plotting.py.