code: def drawPath(self):
      p = QtGui.QPainterPath()
  
      x, y = self.opts["x"], self.opts["y"]
      if x is None or y is None:
          self.path = p
          return
  
      beam = self.opts["beam"]
  
      height, top, bottom = (
          self.opts["height"],
          self.opts["top"],
          self.opts["bottom"],
      )
      if height is not None or top is not None or bottom is not None:
          ## draw vertical error bars
          if height is not None:
              y1 = y - height / 2.0
              y2 = y + height / 2.0
          else:
              if bottom is None:
                  y1 = y
              else:
                  y1 = y - bottom
              if top is None:
                  y2 = y
              else:
                  y2 = y + top
  
          xs = fn.interweaveArrays(x, x)
          y1_y2 = fn.interweaveArrays(y1, y2)
          verticalLines = fn.arrayToQPath(xs, y1_y2, connect="pairs")
          p.addPath(verticalLines)
  
          if beam is not None and beam > 0:
              x1 = x - beam / 2.0
              x2 = x + beam / 2.0
  
              x1_x2 = fn.interweaveArrays(x1, x2)
              if height is not None or top is not None:
                  y2s = fn.interweaveArrays(y2, y2)
                  topEnds = fn.arrayToQPath(x1_x2, y2s, connect="pairs")
                  p.addPath(topEnds)
  
              if height is not None or bottom is not None:
                  y1s = fn.interweaveArrays(y1, y1)
                  bottomEnds = fn.arrayToQPath(
                      x1_x2, y1s, connect="pairs"
                  )
                  p.addPath(bottomEnds)
  
      width, right, left = (
          self.opts["width"],
          self.opts["right"],
          self.opts["left"],
      )
      if width is not None or right is not None or left is not None:
          ## draw vertical error bars
          if width is not None:
              x1 = x - width / 2.0
              x2 = x + width / 2.0
          else:
              if left is None:
                  x1 = x
              else:
                  x1 = x - left
              if right is None:
                  x2 = x
              else:
                  x2 = x + right
  
          ys = fn.interweaveArrays(y, y)
          x1_x2 = fn.interweaveArrays(x1, x2)
          ends = fn.arrayToQPath(x1_x2, ys, connect="pairs")
          p.addPath(ends)
  
          if beam is not None and beam > 0:
              y1 = y - beam / 2.0
              y2 = y + beam / 2.0
              y1_y2 = fn.interweaveArrays(y1, y2)
              if width is not None or right is not None:
                  x2s = fn.interweaveArrays(x2, x2)
                  rightEnds = fn.arrayToQPath(
                      x2s, y1_y2, connect="pairs"
                  )
                  p.addPath(rightEnds)
  
              if width is not None or left is not None:
                  x1s = fn.interweaveArrays(x1, x1)
                  leftEnds = fn.arrayToQPath(
                      x1s, y1_y2, connect="pairs"
                  )
                  p.addPath(leftEnds)
  
      self.path = p
      self.prepareGeometryChange()
  
file_path: pyqtgraph/pyqtgraph/graphicsItems/ErrorBarItem.py
imports: from ..None import functions
  from ..None import getConfigOption
  from ..Qt import QtGui
  from .GraphicsObject import GraphicsObject
label_desc: Use image node_id 4 for calling the ErrorBarItem obj's underlying member method code with example usage: obj.drawPath() without return types