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 1308 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 1310 of file plotting.py.

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

Member Function Documentation

def plotting.FrameRatio.adjustMarginLeft (   self,
  adjust 
)

Definition at line 1363 of file plotting.py.

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

Definition at line 1372 of file plotting.py.

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

Definition at line 1410 of file plotting.py.

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

Definition at line 1355 of file plotting.py.

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

Definition at line 1359 of file plotting.py.

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

Definition at line 1348 of file plotting.py.

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

Definition at line 1352 of file plotting.py.

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

Definition at line 1381 of file plotting.py.

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

Definition at line 1393 of file plotting.py.

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

Definition at line 1384 of file plotting.py.

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

Definition at line 1390 of file plotting.py.

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

Definition at line 1387 of file plotting.py.

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

Definition at line 1396 of file plotting.py.

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

Definition at line 1406 of file plotting.py.

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

Definition at line 1399 of file plotting.py.

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

Definition at line 1402 of file plotting.py.

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

Member Data Documentation

plotting.FrameRatio._coverPad
private

Definition at line 1421 of file plotting.py.

plotting.FrameRatio._frame
private

Definition at line 1314 of file plotting.py.

plotting.FrameRatio._frameRatio
private

Definition at line 1318 of file plotting.py.

plotting.FrameRatio._pad
private

Definition at line 1312 of file plotting.py.

plotting.FrameRatio._padRatio
private

Definition at line 1317 of file plotting.py.

plotting.FrameRatio._parentPad
private

Definition at line 1311 of file plotting.py.