docs: def draw_route(self, df_route, cr, color=None, line_width=None):
          '''
          Draw a line between electrodes listed in a route.
  
          Arguments
          ---------
  
           - `df_route`:
               * A `pandas.DataFrame` containing a column named `electrode_i`.
               * For each row, `electrode_i` corresponds to the integer index of
                 the corresponding electrode.
           - `cr`: Cairo context.
           - `color`: Either a RGB or RGBA tuple, with each color channel in the
             range [0, 1].  If `color` is `None`, the electrode color is set to
             white.
          '''
          df_route_centers = (self.canvas.df_shape_centers
                              .ix[df_route.electrode_i][['x_center',
                                                         'y_center']])
          df_endpoint_marker = (.6 * self.get_endpoint_marker(df_route_centers)
                                + df_route_centers.iloc[-1].values)
  
          # Save cairo context to restore after drawing route.
          cr.save()
          if color is None:
              # Colors from ["Show me the numbers"][1].
              #
              # [1]: http://blog.axc.net/its-the-colors-you-have/
              # LiteOrange = rgb(251,178,88);
              # MedOrange = rgb(250,164,58);
              # LiteGreen = rgb(144,205,151);
              # MedGreen = rgb(96,189,104);
              color_rgb_255 = np.array([96,189,104, .8 * 255])
              color = (color_rgb_255 / 255.).tolist()
          if len(color) < 4:
              color += [1.] * (4 - len(color))
          cr.set_source_rgba(*color)
          cr.move_to(*df_route_centers.iloc[0])
          for electrode_i, center_i in df_route_centers.iloc[1:].iterrows():
              cr.line_to(*center_i)
          if line_width is None:
              line_width = np.sqrt((df_endpoint_marker.max().values -
                                    df_endpoint_marker.min().values).prod()) * .1
          cr.set_line_width(4)
          cr.stroke()
  
          cr.move_to(*df_endpoint_marker.iloc[0])
          for electrode_i, center_i in df_endpoint_marker.iloc[1:].iterrows():
              cr.line_to(*center_i)
          cr.close_path()
          cr.set_source_rgba(*color)
          cr.fill()
          # Restore cairo context after drawing route.
          cr.restore()