hv_anndata.plotting.scanpy.tracksplot¶
- hv_anndata.plotting.scanpy.tracksplot(adata, /, vdims, *, kdim=None, color=None)¶
Tracksplot.
- Parameters:
- adata
AnnData The AnnData object.
- vdims
Collection[AdDim] The value dimensions (one per curve).
- kdim
AdDim|None, default:None The key dimension (inferred if
None).- color
AdDim|None, default:None The color dimension.
- adata
- Return type:
- Returns:
Examples
import hv_anndata.plotting.scanpy as hv_sc from hv_anndata import data, register, A register() adata = data.pbmc68k_processed() markers = ["C1QA", "PSAP", "CD79A", "CD79B", "CST3", "LYZ"] hv_sc.tracksplot( adata, A.X[:, markers], color=A.obs["bulk_labels"] ).opts(hv.opts.Curve(aspect=20))
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/core/dimension.py:1381, in Dimensioned._repr_mimebundle_(self, include, exclude) 1374 def _repr_mimebundle_(self, include=None, exclude=None): 1375 """Resolves the class hierarchy for the class rendering the 1376 object using any display hooks registered on Store.display 1377 hooks. The output of all registered display_hooks is then 1378 combined and returned. 1379 1380 """ -> 1381 return Store.render(self) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/core/options.py:1433, in Store.render(cls, obj) 1431 data, metadata = {}, {} 1432 for hook in hooks: -> 1433 ret = hook(obj) 1434 if ret is None: 1435 continue File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:340, in pprint_display(obj) 338 if not ip.display_formatter.formatters['text/plain'].pprint: 339 return None --> 340 return display(obj, raw_output=True) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:311, in display(obj, raw_output, **kwargs) 309 elif isinstance(obj, (Layout, NdLayout, AdjointLayout)): 310 with option_state(obj): --> 311 output = layout_display(obj) 312 elif isinstance(obj, (HoloMap, DynamicMap)): 313 with option_state(obj): File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:205, in display_hook.<locals>.wrapped(element) 203 try: 204 max_frames = OutputSettings.options['max_frames'] --> 205 mimebundle = fn(element, max_frames=max_frames) 206 if mimebundle is None: 207 return {}, {} File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:274, in layout_display(layout, max_frames) 271 max_frame_warning(max_frames) 272 return None --> 274 return render(layout) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:76, in render(obj, **kwargs) 73 if renderer.fig == 'pdf': 74 renderer = renderer.instance(fig='png') ---> 76 return renderer.components(obj, **kwargs) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/renderer.py:396, in Renderer.components(self, obj, fmt, comm, **kwargs) 394 embed = (not (dynamic or streams or self.widget_mode == 'live') or config.embed) 395 if embed or config.comms == 'default': --> 396 return self._render_panel(plot, embed, comm) 397 return self._render_ipywidget(plot) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/renderer.py:403, in Renderer._render_panel(self, plot, embed, comm) 401 doc = Document() 402 with config.set(embed=embed): --> 403 model = plot.layout._render_model(doc, comm) 404 if embed: 405 return render_model(model, comm) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/panel/viewable.py:775, in Viewable._render_model(self, doc, comm) 773 if comm is None: 774 comm = state._comm_manager.get_server_comm() --> 775 model = self.get_root(doc, comm) 777 if self._design and self._design.theme.bokeh_theme: 778 doc.theme = self._design.theme.bokeh_theme File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/panel/layout/base.py:332, in Panel.get_root(self, doc, comm, preprocess) 328 def get_root( 329 self, doc: Document | None = None, comm: Comm | None = None, 330 preprocess: bool = True 331 ) -> Model: --> 332 root = super().get_root(doc, comm, preprocess) 333 # ALERT: Find a better way to handle this 334 if hasattr(root, 'styles') and 'overflow-x' in root.styles: File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/panel/viewable.py:705, in Renderable.get_root(self, doc, comm, preprocess) 703 wrapper = self._design._wrapper(self) 704 if wrapper is self: --> 705 root = self._get_model(doc, comm=comm) 706 if preprocess: 707 self._preprocess(root) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/panel/layout/base.py:316, in Panel._get_model(self, doc, root, parent, comm) 314 root = root or model 315 self._models[root.ref['id']] = (model, parent) --> 316 objects, _ = self._get_objects(model, [], doc, root, comm) 317 props = self._get_properties(doc) 318 props[self._property_mapping['objects']] = objects File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/panel/layout/base.py:298, in Panel._get_objects(self, model, old_objects, doc, root, comm) 296 else: 297 try: --> 298 child = pane._get_model(doc, root, model, comm) 299 except RerenderError as e: 300 if e.layout is not None and e.layout is not self: File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/panel/pane/holoviews.py:494, in HoloViews._get_model(self, doc, root, parent, comm) 492 plot = self.object 493 else: --> 494 plot = self._render(doc, comm, root) 496 plot.pane = self 497 backend = plot.renderer.backend File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/panel/pane/holoviews.py:588, in HoloViews._render(self, doc, comm, root) 585 if comm: 586 kwargs['comm'] = comm --> 588 return renderer.get_plot(self.object, **kwargs) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/bokeh/renderer.py:70, in BokehRenderer.get_plot(self_or_cls, obj, doc, renderer, **kwargs) 63 @bothmethod 64 def get_plot(self_or_cls, obj, doc=None, renderer=None, **kwargs): 65 """Given a HoloViews Viewable return a corresponding plot instance. 66 Allows supplying a document attach the plot to, useful when 67 combining the bokeh model with another plot. 68 69 """ ---> 70 plot = super().get_plot(obj, doc, renderer, **kwargs) 71 if plot.document is None: 72 plot.document = Document() if self_or_cls.notebook_context else curdoc() File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/renderer.py:234, in Renderer.get_plot(self_or_cls, obj, doc, renderer, comm, **kwargs) 232 if isinstance(obj, AdjointLayout): 233 obj = Layout(obj) --> 234 plot = self_or_cls.plotting_class(obj)(obj, renderer=renderer, 235 **plot_opts) 236 defaults = [kd.default for kd in plot.dimensions] 237 init_key = tuple(v if d is None else d for v, d in 238 zip(plot.keys[0], defaults, strict=None)) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/bokeh/plot.py:748, in LayoutPlot.__init__(self, layout, keys, **params) 746 def __init__(self, layout, keys=None, **params): 747 super().__init__(layout, keys=keys, **params) --> 748 self.layout, self.subplots, self.paths = self._init_layout(layout) 749 if self.top_level: 750 self.traverse(lambda x: attach_streams(self, x.hmap, 2), 751 [GenericElementPlot]) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/bokeh/plot.py:801, in LayoutPlot._init_layout(self, layout) 799 layout_count += 1 800 num = 0 if empty else layout_count --> 801 subplots, adjoint_layout = self._create_subplots( 802 view, positions, layout_dimensions, frame_ranges, num=num 803 ) 805 # Generate the AdjointLayoutsPlot which will coordinate 806 # plotting of AdjointLayouts in the larger grid 807 plotopts = self.lookup_options(view, 'plot').options File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/bokeh/plot.py:870, in LayoutPlot._create_subplots(self, layout, positions, layout_dimensions, ranges, num) 868 continue 869 num = num if len(self.coords) > 1 else 0 --> 870 subplot = plot_type(element, keys=self.keys, 871 dimensions=self.dimensions, 872 layout_dimensions=layout_dimensions, 873 ranges=ranges, subplot=True, root=self.root, 874 uniform=self.uniform, layout_num=num, 875 renderer=self.renderer, 876 **dict({'shared_axes': self.shared_axes}, 877 **plotopts)) 878 subplots[pos] = subplot 879 if isinstance(plot_type, type) and issubclass(plot_type, GenericCompositePlot): File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/bokeh/element.py:3108, in OverlayPlot.__init__(self, overlay, **kwargs) 3106 def __init__(self, overlay, **kwargs): 3107 self._multi_y_propagation = self.lookup_options(overlay, 'plot').options.get('multi_y', False) -> 3108 super().__init__(overlay, **kwargs) 3109 self.callbacks, self.source_streams = self._construct_callbacks() 3110 self._multi_y_propagation = False File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plot.py:1755, in GenericOverlayPlot.__init__(self, overlay, ranges, batched, keys, group_counter, **params) 1752 if 'projection' not in params: 1753 params['projection'] = self._get_projection(overlay) -> 1755 super().__init__(overlay, ranges=ranges, keys=keys, 1756 batched=batched, **params) 1758 if ('multi_y' in self.param) and self.multi_y: 1759 for s in self.streams: File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/bokeh/element.py:364, in ElementPlot.__init__(self, element, plot, **params) 362 self._subcoord_standalone_ = None 363 self.current_ranges = None --> 364 super().__init__(element, **params) 365 self.handles = {} if plot is None else self.handles['plot'] 366 self.static = len(self.hmap) == 1 and len(self.keys) == len(self.hmap) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plot.py:1264, in GenericElementPlot.__init__(self, element, keys, ranges, dimensions, batched, overlaid, cyclic_index, zorder, style, overlay_dims, stream_sources, streams, **params) 1262 if p in self.param and p in self._deprecations and pval is not None: 1263 self.param.warning(self._deprecations[p]) -> 1264 super().__init__(keys=keys, dimensions=dimensions, 1265 dynamic=dynamic, **applied_params) 1266 self.batched = batched 1267 self.streams = get_nested_streams(self.hmap) if streams is None else streams File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plot.py:435, in DimensionedPlot.__init__(self, keys, dimensions, layout_dimensions, uniform, subplot, adjoined, layout_num, style, subplots, dynamic, **params) 433 self.ranges = {} 434 self._updated = False # Whether the plot should be marked as updated --> 435 super().__init__(**params) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plot.py:70, in Plot.__init__(self, renderer, root, **params) 67 def __init__(self, renderer=None, root=None, **params): 68 params = {k: v for k, v in params.items() 69 if k in self.param} ---> 70 super().__init__(**params) 71 self.renderer = renderer if renderer else Store.renderers[self.backend].instance() 72 self._force = False File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:5879, in Parameterized.__init__(self, **params) 5877 if self.param.name.default == self.__class__.__name__: 5878 self.param._generate_name() -> 5879 refs, deps = self.param._setup_params(**params) 5880 object_count += 1 5882 self._param__private.initialized = True File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:2316, in as_uninitialized.<locals>.override_initialization(self_, *args, **kw) 2314 original_initialized = parameterized_instance._param__private.initialized 2315 parameterized_instance._param__private.initialized = False -> 2316 ret = fn(self_, *args, **kw) 2317 parameterized_instance._param__private.initialized = original_initialized 2318 return ret File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:2646, in Parameters._setup_params(self_, **params) 2634 if ref: 2635 warnings.warn( 2636 f"Parameter {name!r} on {pobj.owner} is being given a valid parameter " 2637 f"reference {val} but is implicitly allow_refs=False. " (...) 2644 stacklevel=_find_stack_level(), 2645 ) -> 2646 setattr(self, name, val) 2647 continue 2649 # Resolve references File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:679, in instance_descriptor.<locals>._f(self, obj, val) 677 instance_param.__set__(obj, val) 678 return --> 679 return f(self, obj, val) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:1992, in Parameter.__set__(self, obj, val) 1989 if is_async or val is Undefined: 1990 return -> 1992 self._validate(val) 1994 _old = NotImplemented 1995 # obj can be None if __set__ is called for a Parameterized class File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:2274, in String._validate(self, val) 2273 def _validate(self, val: t.Any): -> 2274 self._validate_value(val, self.allow_None) 2275 self._validate_regex(val, self.regex) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:2268, in String._validate_value(self, value, allow_None) 2266 return 2267 if not isinstance(value, str): -> 2268 raise ValueError( 2269 f'{_validate_error_prefix(self)} only takes a string value, ' 2270 f'not value of {type(value)}.' 2271 ) ValueError: String parameter 'GenericElementPlot.ylabel' only takes a string value, not value of <class 'hv_anndata._ref.AdDim'>.
:NdLayout [marker] :NdOverlay [A.obs['bulk_labels']] :Curve [A.obs.index] (PSAP,bulk_labels)import hv_anndata.plotting.scanpy as hv_sc from hv_anndata import data, register, A register() adata = data.pbmc68k_processed() markers = ["C1QA", "PSAP", "CD79A", "CD79B", "CST3", "LYZ"] hv_sc.tracksplot( adata, A.X[:, markers], color=A.obs["bulk_labels"] ).opts(hv.opts.Curve(aspect=20))
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/core/dimension.py:1381, in Dimensioned._repr_mimebundle_(self, include, exclude) 1374 def _repr_mimebundle_(self, include=None, exclude=None): 1375 """Resolves the class hierarchy for the class rendering the 1376 object using any display hooks registered on Store.display 1377 hooks. The output of all registered display_hooks is then 1378 combined and returned. 1379 1380 """ -> 1381 return Store.render(self) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/core/options.py:1433, in Store.render(cls, obj) 1431 data, metadata = {}, {} 1432 for hook in hooks: -> 1433 ret = hook(obj) 1434 if ret is None: 1435 continue File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:340, in pprint_display(obj) 338 if not ip.display_formatter.formatters['text/plain'].pprint: 339 return None --> 340 return display(obj, raw_output=True) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:311, in display(obj, raw_output, **kwargs) 309 elif isinstance(obj, (Layout, NdLayout, AdjointLayout)): 310 with option_state(obj): --> 311 output = layout_display(obj) 312 elif isinstance(obj, (HoloMap, DynamicMap)): 313 with option_state(obj): File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:205, in display_hook.<locals>.wrapped(element) 203 try: 204 max_frames = OutputSettings.options['max_frames'] --> 205 mimebundle = fn(element, max_frames=max_frames) 206 if mimebundle is None: 207 return {}, {} File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:274, in layout_display(layout, max_frames) 271 max_frame_warning(max_frames) 272 return None --> 274 return render(layout) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:76, in render(obj, **kwargs) 73 if renderer.fig == 'pdf': 74 renderer = renderer.instance(fig='png') ---> 76 return renderer.components(obj, **kwargs) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/renderer.py:377, in Renderer.components(self, obj, fmt, comm, **kwargs) 375 plot = obj 376 else: --> 377 plot, fmt = self._validate(obj, fmt) 379 if not isinstance(plot, Viewable): 380 html = self._figure_data(plot, fmt, as_script=True, **kwargs) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/renderer.py:308, in Renderer._validate(self, obj, fmt, **kwargs) 305 plot = HoloViewsPane(obj, center=self.center, backend=self.backend, 306 renderer=self) 307 else: --> 308 plot = self.get_plot(obj, renderer=self, **kwargs) 310 all_formats = set(fig_formats + holomap_formats) 311 if fmt not in all_formats: File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/renderer.py:234, in Renderer.get_plot(self_or_cls, obj, doc, renderer, comm, **kwargs) 232 if isinstance(obj, AdjointLayout): 233 obj = Layout(obj) --> 234 plot = self_or_cls.plotting_class(obj)(obj, renderer=renderer, 235 **plot_opts) 236 defaults = [kd.default for kd in plot.dimensions] 237 init_key = tuple(v if d is None else d for v, d in 238 zip(plot.keys[0], defaults, strict=None)) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/mpl/plot.py:810, in LayoutPlot.__init__(self, layout, keys, **params) 808 super().__init__(layout=layout, keys=keys, **params) 809 with mpl.rc_context(rc=self.fig_rcparams): --> 810 self.subplots, self.subaxes, self.layout = self._compute_gridspec(layout) 811 if self.top_level: 812 self.traverse(lambda x: attach_streams(self, x.hmap, 2), 813 [GenericElementPlot]) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/mpl/plot.py:997, in LayoutPlot._compute_gridspec(self, layout) 994 layout_count += 1 995 subaxes = [plt.subplot(self.gs[ind], projection=proj) 996 for ind, proj in zip(gsinds, projs, strict=None)] --> 997 subplot_data = self._create_subplots(obj, positions, 998 layout_dimensions, frame_ranges, 999 dict(zip(positions, subaxes, strict=None)), 1000 num=0 if empty else layout_count) 1001 subplots, adjoint_layout, _ = subplot_data 1002 layout_axes[(r, c)] = subaxes File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/mpl/plot.py:1117, in LayoutPlot._create_subplots(self, layout, positions, layout_dimensions, ranges, axes, num, create) 1115 plot_type = MPLPlot.sideplots[vtype] 1116 num = num if len(self.coords) > 1 else 0 -> 1117 subplots[pos] = plot_type(view, axis=ax, keys=self.keys, 1118 dimensions=self.dimensions, 1119 layout_dimensions=layout_dimensions, 1120 ranges=ranges, subplot=True, 1121 uniform=self.uniform, layout_num=num, 1122 renderer=self.renderer, **plotopts) 1123 if isinstance(view, (Element, HoloMap, Collator, CompositeOverlay)): 1124 adjoint_clone[pos] = subplots[pos].hmap File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/mpl/element.py:1204, in OverlayPlot.__init__(self, overlay, ranges, **params) 1202 if 'projection' not in params: 1203 params['projection'] = self._get_projection(overlay) -> 1204 super().__init__(overlay, ranges=ranges, **params) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/mpl/element.py:104, in ElementPlot.__init__(self, element, **params) 103 def __init__(self, element, **params): --> 104 super().__init__(element, **params) 105 check = self.hmap.last 106 if isinstance(check, CompositeOverlay): File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plot.py:1755, in GenericOverlayPlot.__init__(self, overlay, ranges, batched, keys, group_counter, **params) 1752 if 'projection' not in params: 1753 params['projection'] = self._get_projection(overlay) -> 1755 super().__init__(overlay, ranges=ranges, keys=keys, 1756 batched=batched, **params) 1758 if ('multi_y' in self.param) and self.multi_y: 1759 for s in self.streams: File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plot.py:1264, in GenericElementPlot.__init__(self, element, keys, ranges, dimensions, batched, overlaid, cyclic_index, zorder, style, overlay_dims, stream_sources, streams, **params) 1262 if p in self.param and p in self._deprecations and pval is not None: 1263 self.param.warning(self._deprecations[p]) -> 1264 super().__init__(keys=keys, dimensions=dimensions, 1265 dynamic=dynamic, **applied_params) 1266 self.batched = batched 1267 self.streams = get_nested_streams(self.hmap) if streams is None else streams File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/mpl/plot.py:153, in MPLPlot.__init__(self, fig, axis, **params) 151 def __init__(self, fig=None, axis=None, **params): 152 self._create_fig = True --> 153 super().__init__(**params) 154 # List of handles to matplotlib objects for animation update 155 self.fig_scale = self.fig_size/100. File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plot.py:435, in DimensionedPlot.__init__(self, keys, dimensions, layout_dimensions, uniform, subplot, adjoined, layout_num, style, subplots, dynamic, **params) 433 self.ranges = {} 434 self._updated = False # Whether the plot should be marked as updated --> 435 super().__init__(**params) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plot.py:70, in Plot.__init__(self, renderer, root, **params) 67 def __init__(self, renderer=None, root=None, **params): 68 params = {k: v for k, v in params.items() 69 if k in self.param} ---> 70 super().__init__(**params) 71 self.renderer = renderer if renderer else Store.renderers[self.backend].instance() 72 self._force = False File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:5879, in Parameterized.__init__(self, **params) 5877 if self.param.name.default == self.__class__.__name__: 5878 self.param._generate_name() -> 5879 refs, deps = self.param._setup_params(**params) 5880 object_count += 1 5882 self._param__private.initialized = True File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:2316, in as_uninitialized.<locals>.override_initialization(self_, *args, **kw) 2314 original_initialized = parameterized_instance._param__private.initialized 2315 parameterized_instance._param__private.initialized = False -> 2316 ret = fn(self_, *args, **kw) 2317 parameterized_instance._param__private.initialized = original_initialized 2318 return ret File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:2646, in Parameters._setup_params(self_, **params) 2634 if ref: 2635 warnings.warn( 2636 f"Parameter {name!r} on {pobj.owner} is being given a valid parameter " 2637 f"reference {val} but is implicitly allow_refs=False. " (...) 2644 stacklevel=_find_stack_level(), 2645 ) -> 2646 setattr(self, name, val) 2647 continue 2649 # Resolve references File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:679, in instance_descriptor.<locals>._f(self, obj, val) 677 instance_param.__set__(obj, val) 678 return --> 679 return f(self, obj, val) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:1992, in Parameter.__set__(self, obj, val) 1989 if is_async or val is Undefined: 1990 return -> 1992 self._validate(val) 1994 _old = NotImplemented 1995 # obj can be None if __set__ is called for a Parameterized class File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:2274, in String._validate(self, val) 2273 def _validate(self, val: t.Any): -> 2274 self._validate_value(val, self.allow_None) 2275 self._validate_regex(val, self.regex) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:2268, in String._validate_value(self, value, allow_None) 2266 return 2267 if not isinstance(value, str): -> 2268 raise ValueError( 2269 f'{_validate_error_prefix(self)} only takes a string value, ' 2270 f'not value of {type(value)}.' 2271 ) ValueError: String parameter 'GenericElementPlot.ylabel' only takes a string value, not value of <class 'hv_anndata._ref.AdDim'>.
:NdLayout [marker] :NdOverlay [A.obs['bulk_labels']] :Curve [A.obs.index] (PSAP,bulk_labels)import hv_anndata.plotting.scanpy as hv_sc from hv_anndata import data, register, A register() adata = data.pbmc68k_processed() markers = ["C1QA", "PSAP", "CD79A", "CD79B", "CST3", "LYZ"] hv_sc.tracksplot( adata, A.X[:, markers], color=A.obs["bulk_labels"] ).opts(hv.opts.Curve(aspect=20))
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/core/dimension.py:1381, in Dimensioned._repr_mimebundle_(self, include, exclude) 1374 def _repr_mimebundle_(self, include=None, exclude=None): 1375 """Resolves the class hierarchy for the class rendering the 1376 object using any display hooks registered on Store.display 1377 hooks. The output of all registered display_hooks is then 1378 combined and returned. 1379 1380 """ -> 1381 return Store.render(self) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/core/options.py:1433, in Store.render(cls, obj) 1431 data, metadata = {}, {} 1432 for hook in hooks: -> 1433 ret = hook(obj) 1434 if ret is None: 1435 continue File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:340, in pprint_display(obj) 338 if not ip.display_formatter.formatters['text/plain'].pprint: 339 return None --> 340 return display(obj, raw_output=True) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:311, in display(obj, raw_output, **kwargs) 309 elif isinstance(obj, (Layout, NdLayout, AdjointLayout)): 310 with option_state(obj): --> 311 output = layout_display(obj) 312 elif isinstance(obj, (HoloMap, DynamicMap)): 313 with option_state(obj): File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:205, in display_hook.<locals>.wrapped(element) 203 try: 204 max_frames = OutputSettings.options['max_frames'] --> 205 mimebundle = fn(element, max_frames=max_frames) 206 if mimebundle is None: 207 return {}, {} File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:274, in layout_display(layout, max_frames) 271 max_frame_warning(max_frames) 272 return None --> 274 return render(layout) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/ipython/display_hooks.py:76, in render(obj, **kwargs) 73 if renderer.fig == 'pdf': 74 renderer = renderer.instance(fig='png') ---> 76 return renderer.components(obj, **kwargs) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/renderer.py:396, in Renderer.components(self, obj, fmt, comm, **kwargs) 394 embed = (not (dynamic or streams or self.widget_mode == 'live') or config.embed) 395 if embed or config.comms == 'default': --> 396 return self._render_panel(plot, embed, comm) 397 return self._render_ipywidget(plot) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/renderer.py:403, in Renderer._render_panel(self, plot, embed, comm) 401 doc = Document() 402 with config.set(embed=embed): --> 403 model = plot.layout._render_model(doc, comm) 404 if embed: 405 return render_model(model, comm) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/panel/viewable.py:775, in Viewable._render_model(self, doc, comm) 773 if comm is None: 774 comm = state._comm_manager.get_server_comm() --> 775 model = self.get_root(doc, comm) 777 if self._design and self._design.theme.bokeh_theme: 778 doc.theme = self._design.theme.bokeh_theme File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/panel/layout/base.py:332, in Panel.get_root(self, doc, comm, preprocess) 328 def get_root( 329 self, doc: Document | None = None, comm: Comm | None = None, 330 preprocess: bool = True 331 ) -> Model: --> 332 root = super().get_root(doc, comm, preprocess) 333 # ALERT: Find a better way to handle this 334 if hasattr(root, 'styles') and 'overflow-x' in root.styles: File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/panel/viewable.py:705, in Renderable.get_root(self, doc, comm, preprocess) 703 wrapper = self._design._wrapper(self) 704 if wrapper is self: --> 705 root = self._get_model(doc, comm=comm) 706 if preprocess: 707 self._preprocess(root) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/panel/layout/base.py:316, in Panel._get_model(self, doc, root, parent, comm) 314 root = root or model 315 self._models[root.ref['id']] = (model, parent) --> 316 objects, _ = self._get_objects(model, [], doc, root, comm) 317 props = self._get_properties(doc) 318 props[self._property_mapping['objects']] = objects File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/panel/layout/base.py:298, in Panel._get_objects(self, model, old_objects, doc, root, comm) 296 else: 297 try: --> 298 child = pane._get_model(doc, root, model, comm) 299 except RerenderError as e: 300 if e.layout is not None and e.layout is not self: File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/panel/pane/holoviews.py:494, in HoloViews._get_model(self, doc, root, parent, comm) 492 plot = self.object 493 else: --> 494 plot = self._render(doc, comm, root) 496 plot.pane = self 497 backend = plot.renderer.backend File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/panel/pane/holoviews.py:588, in HoloViews._render(self, doc, comm, root) 585 if comm: 586 kwargs['comm'] = comm --> 588 return renderer.get_plot(self.object, **kwargs) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/renderer.py:234, in Renderer.get_plot(self_or_cls, obj, doc, renderer, comm, **kwargs) 232 if isinstance(obj, AdjointLayout): 233 obj = Layout(obj) --> 234 plot = self_or_cls.plotting_class(obj)(obj, renderer=renderer, 235 **plot_opts) 236 defaults = [kd.default for kd in plot.dimensions] 237 init_key = tuple(v if d is None else d for v, d in 238 zip(plot.keys[0], defaults, strict=None)) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plotly/plot.py:73, in LayoutPlot.__init__(self, layout, **params) 71 def __init__(self, layout, **params): 72 super().__init__(layout, **params) ---> 73 self.layout, self.subplots, self.paths = self._init_layout(layout) 75 if self.top_level: 76 self.traverse(lambda x: attach_streams(self, x.hmap, 2), 77 [GenericElementPlot]) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plotly/plot.py:122, in LayoutPlot._init_layout(self, layout) 120 else: 121 layout_count += 1 --> 122 subplot_data = self._create_subplots(obj, positions, 123 layout_dimensions, frame_ranges, 124 num=0 if empty else layout_count) 125 subplots, adjoint_layout = subplot_data 127 # Generate the AdjointLayoutsPlot which will coordinate 128 # plotting of AdjointLayouts in the larger grid File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plotly/plot.py:182, in LayoutPlot._create_subplots(self, layout, positions, layout_dimensions, ranges, num) 180 continue 181 num = num if len(self.coords) > 1 else 0 --> 182 subplot = plot_type(element, keys=self.keys, 183 dimensions=self.dimensions, 184 layout_dimensions=layout_dimensions, 185 ranges=ranges, subplot=True, 186 uniform=self.uniform, layout_num=num, 187 **plotopts) 188 subplots[pos] = subplot 189 if isinstance(plot_type, type) and issubclass(plot_type, GenericCompositePlot): File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plot.py:1755, in GenericOverlayPlot.__init__(self, overlay, ranges, batched, keys, group_counter, **params) 1752 if 'projection' not in params: 1753 params['projection'] = self._get_projection(overlay) -> 1755 super().__init__(overlay, ranges=ranges, keys=keys, 1756 batched=batched, **params) 1758 if ('multi_y' in self.param) and self.multi_y: 1759 for s in self.streams: File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plotly/element.py:119, in ElementPlot.__init__(self, element, plot, **params) 118 def __init__(self, element, plot=None, **params): --> 119 super().__init__(element, **params) 120 self.trace_uid = str(uuid.uuid4()) 121 self.static = len(self.hmap) == 1 and len(self.keys) == len(self.hmap) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plot.py:1264, in GenericElementPlot.__init__(self, element, keys, ranges, dimensions, batched, overlaid, cyclic_index, zorder, style, overlay_dims, stream_sources, streams, **params) 1262 if p in self.param and p in self._deprecations and pval is not None: 1263 self.param.warning(self._deprecations[p]) -> 1264 super().__init__(keys=keys, dimensions=dimensions, 1265 dynamic=dynamic, **applied_params) 1266 self.batched = batched 1267 self.streams = get_nested_streams(self.hmap) if streams is None else streams File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plot.py:435, in DimensionedPlot.__init__(self, keys, dimensions, layout_dimensions, uniform, subplot, adjoined, layout_num, style, subplots, dynamic, **params) 433 self.ranges = {} 434 self._updated = False # Whether the plot should be marked as updated --> 435 super().__init__(**params) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/holoviews/plotting/plot.py:70, in Plot.__init__(self, renderer, root, **params) 67 def __init__(self, renderer=None, root=None, **params): 68 params = {k: v for k, v in params.items() 69 if k in self.param} ---> 70 super().__init__(**params) 71 self.renderer = renderer if renderer else Store.renderers[self.backend].instance() 72 self._force = False File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:5879, in Parameterized.__init__(self, **params) 5877 if self.param.name.default == self.__class__.__name__: 5878 self.param._generate_name() -> 5879 refs, deps = self.param._setup_params(**params) 5880 object_count += 1 5882 self._param__private.initialized = True File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:2316, in as_uninitialized.<locals>.override_initialization(self_, *args, **kw) 2314 original_initialized = parameterized_instance._param__private.initialized 2315 parameterized_instance._param__private.initialized = False -> 2316 ret = fn(self_, *args, **kw) 2317 parameterized_instance._param__private.initialized = original_initialized 2318 return ret File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:2646, in Parameters._setup_params(self_, **params) 2634 if ref: 2635 warnings.warn( 2636 f"Parameter {name!r} on {pobj.owner} is being given a valid parameter " 2637 f"reference {val} but is implicitly allow_refs=False. " (...) 2644 stacklevel=_find_stack_level(), 2645 ) -> 2646 setattr(self, name, val) 2647 continue 2649 # Resolve references File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:679, in instance_descriptor.<locals>._f(self, obj, val) 677 instance_param.__set__(obj, val) 678 return --> 679 return f(self, obj, val) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:1992, in Parameter.__set__(self, obj, val) 1989 if is_async or val is Undefined: 1990 return -> 1992 self._validate(val) 1994 _old = NotImplemented 1995 # obj can be None if __set__ is called for a Parameterized class File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:2274, in String._validate(self, val) 2273 def _validate(self, val: t.Any): -> 2274 self._validate_value(val, self.allow_None) 2275 self._validate_regex(val, self.regex) File ~/.local/share/hatch/env/virtual/hv-anndata/STk7F69l/docs/lib/python3.13/site-packages/param/parameterized.py:2268, in String._validate_value(self, value, allow_None) 2266 return 2267 if not isinstance(value, str): -> 2268 raise ValueError( 2269 f'{_validate_error_prefix(self)} only takes a string value, ' 2270 f'not value of {type(value)}.' 2271 ) ValueError: String parameter 'GenericElementPlot.ylabel' only takes a string value, not value of <class 'hv_anndata._ref.AdDim'>.
:NdLayout [marker] :NdOverlay [A.obs['bulk_labels']] :Curve [A.obs.index] (PSAP,bulk_labels)