code: def test_errorbars_linear_color_op(self):
      errorbars = ErrorBars(
          [
              (0, 0, 0.1, 0.2, 0),
              (0, 1, 0.2, 0.4, 1),
              (0, 2, 0.6, 1.2, 2),
          ],
          vdims=["y", "perr", "nerr", "color"],
      ).opts(color="color")
      plot = bokeh_renderer.get_plot(errorbars)
      cds = plot.handles["cds"]
      glyph = plot.handles["glyph"]
      cmapper = plot.handles["color_color_mapper"]
      self.assertTrue(cmapper, LinearColorMapper)
      self.assertEqual(cmapper.low, 0)
      self.assertEqual(cmapper.high, 2)
      self.assertEqual(cds.data["color"], np.array([0, 1, 2]))
      self.assertEqual(
          property_to_dict(glyph.line_color),
          {"field": "color", "transform": cmapper},
      )
  
file_path: holoviews/holoviews/tests/plotting/bokeh/test_errorbarplot.py
imports: import numpy
  from bokeh.models import CategoricalColorMapper, LinearColorMapper
  from holoviews.element import ErrorBars
  from holoviews.plotting.bokeh.util import property_to_dict
  from .test_plot import TestBokehPlot, bokeh_renderer
label_desc: Use image node_id 8 for calling the TestErrorBarsPlot obj's underlying member method code with example usage: obj.test_errorbars_linear_color_op() without return types