@@ -234,6 +234,10 @@ def _feature_changed(self, key, new_data):
234234
235235 self ._call_event_handlers (event_data )
236236
237+ def __repr__ (self ) -> str :
238+ s = f"ColorsFeature for { self ._parent } . Call `<graphic>.colors()` to get values."
239+ return s
240+
237241
238242class CmapFeature (ColorFeature ):
239243 """
@@ -270,6 +274,10 @@ def __setitem__(self, key, cmap_name):
270274 self ._cmap_name = cmap_name
271275 super (CmapFeature , self ).__setitem__ (key , colors )
272276
277+ @property
278+ def name (self ) -> str :
279+ return self ._cmap_name
280+
273281 @property
274282 def values (self ) -> np .ndarray :
275283 return self ._cmap_values
@@ -287,10 +295,18 @@ def values(self, values: np.ndarray):
287295
288296 super (CmapFeature , self ).__setitem__ (slice (None ), colors )
289297
298+ def __repr__ (self ) -> str :
299+ s = f"CmapFeature for { self ._parent } , to get name or values: `<graphic>.cmap.name`, `<graphic>.cmap.values`"
300+ return s
301+
290302
291303class ImageCmapFeature (GraphicFeature ):
292304 """
293- Colormap for :class:`ImageGraphic`
305+ Colormap for :class:`ImageGraphic`.
306+
307+ <graphic>.cmap() returns the Texture buffer for the cmap.
308+
309+ <graphic>.cmap.name returns the cmap name as a str.
294310
295311 **event pick info:**
296312
@@ -309,17 +325,21 @@ class ImageCmapFeature(GraphicFeature):
309325 def __init__ (self , parent , cmap : str ):
310326 cmap_texture_view = get_cmap_texture (cmap )
311327 super (ImageCmapFeature , self ).__init__ (parent , cmap_texture_view )
312- self .name = cmap
328+ self ._name = cmap
313329
314330 def _set (self , cmap_name : str ):
315331 if self ._parent .data ().ndim > 2 :
316332 return
317333
318334 self ._parent .world_object .material .map .data [:] = make_colors (256 , cmap_name )
319335 self ._parent .world_object .material .map .update_range ((0 , 0 , 0 ), size = (256 , 1 , 1 ))
320- self .name = cmap_name
336+ self ._name = cmap_name
321337
322- self ._feature_changed (key = None , new_data = self .name )
338+ self ._feature_changed (key = None , new_data = self ._name )
339+
340+ @property
341+ def name (self ) -> str :
342+ return self ._name
323343
324344 @property
325345 def vmin (self ) -> float :
@@ -359,7 +379,7 @@ def _feature_changed(self, key, new_data):
359379 pick_info = {
360380 "index" : None ,
361381 "world_object" : self ._parent .world_object ,
362- "name" : self .name ,
382+ "name" : self ._name ,
363383 "vmin" : self .vmin ,
364384 "vmax" : self .vmax ,
365385 }
@@ -368,6 +388,10 @@ def _feature_changed(self, key, new_data):
368388
369389 self ._call_event_handlers (event_data )
370390
391+ def __repr__ (self ) -> str :
392+ s = f"ImageCmapFeature for { self ._parent } . Use `<graphic>.cmap.name` to get str name of cmap."
393+ return s
394+
371395
372396class HeatmapCmapFeature (ImageCmapFeature ):
373397 """
0 commit comments