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, 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 1306 of file plotting.py.

Constructor & Destructor Documentation

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

Definition at line 1308 of file plotting.py.

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

Member Function Documentation

def plotting.FrameRatio.adjustMarginLeft (   self,
  adjust 
)

Definition at line 1361 of file plotting.py.

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

Definition at line 1370 of file plotting.py.

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

Definition at line 1408 of file plotting.py.

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

Definition at line 1353 of file plotting.py.

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

Definition at line 1357 of file plotting.py.

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

Definition at line 1346 of file plotting.py.

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

Definition at line 1350 of file plotting.py.

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

Definition at line 1379 of file plotting.py.

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

Definition at line 1391 of file plotting.py.

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

Definition at line 1382 of file plotting.py.

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

Definition at line 1388 of file plotting.py.

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

Definition at line 1385 of file plotting.py.

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

Definition at line 1394 of file plotting.py.

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

Definition at line 1404 of file plotting.py.

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

Definition at line 1397 of file plotting.py.

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

Definition at line 1400 of file plotting.py.

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

Member Data Documentation

plotting.FrameRatio._coverPad
private

Definition at line 1419 of file plotting.py.

plotting.FrameRatio._frame
private

Definition at line 1312 of file plotting.py.

plotting.FrameRatio._frameRatio
private

Definition at line 1316 of file plotting.py.

plotting.FrameRatio._pad
private

Definition at line 1310 of file plotting.py.

plotting.FrameRatio._padRatio
private

Definition at line 1315 of file plotting.py.

plotting.FrameRatio._parentPad
private

Definition at line 1309 of file plotting.py.