@@ -116,15 +116,16 @@ def __init__(self, view, viewer_state, layer_state=None, layer=None):
116116
117117 lines_gl_cls = LinesGL
118118 self .line_mark_gl = lines_gl_cls (scales = self .view .scales , x = [0. ], y = [0. ])
119- self .line_mark_gl .color = [color2hex (self .state .color )]
119+ self .line_mark_gl .colors = [color2hex (self .state .color )]
120120 self .line_mark_gl .opacities = [self .state .alpha ]
121+ self .line_mark_gl .visible = False
121122
122123 # duplicate lines using base bqplot.Lines for linestyle default visible=False
123124 lines_cls = bqplot .Lines
124125 self .line_mark = lines_cls (scales = self .view .scales , x = [0. ], y = [0. ])
125126 self .line_mark .colors = [color2hex (self .state .color )]
126127 self .line_mark .opacities = [self .state .alpha ]
127- self .line_mark .visible = False
128+ self .line_mark .visible = True
128129
129130 # Vectors
130131
@@ -165,7 +166,6 @@ def __init__(self, view, viewer_state, layer_state=None, layer=None):
165166 self .density_mark ,
166167 self .scatter_mark ,
167168 self .line_mark_gl ,
168- self .line_mark ,
169169 self .vector_mark ,
170170 self .vector_lines ,
171171 ]
@@ -184,7 +184,6 @@ def compute_density_map(self, *args, **kwargs):
184184 return density_map
185185
186186 def _update_data (self ):
187-
188187 try :
189188 if not self .state .density_map :
190189 x = ensure_numerical (self .layer [self ._viewer_state .x_att ].ravel ())
@@ -271,7 +270,6 @@ def _update_data(self):
271270 self .vector_lines .y = []
272271
273272 def _update_visual_attributes (self , changed , force = False ):
274-
275273 if not self .enabled :
276274 return
277275
@@ -344,13 +342,31 @@ def _update_visual_attributes(self, changed, force=False):
344342 self .line_mark .stroke_width = self .state .linewidth
345343
346344 if force or "linestyle" in changed :
347- self .line_mark_gl . visible = False
345+ self .line_mark . colors = [ color2hex ( self . state . color )]
348346 self .line_mark .visible = True
349- if self .state .linestyle == "dashdot" :
350- self .line_mark .line_style = 'dash_dotted'
347+ if self .state .linestyle == "solid" :
348+ self .line_mark_gl .visible = True
349+ self .view .figure .marks = [
350+ self .line_mark_gl ,
351+ self .vector_mark ,
352+ self .vector_lines ,
353+ self .scatter_mark ,
354+ self .density_mark
355+ ]
351356 else :
352- self .line_mark .line_style = self .state .linestyle
353- self .view .figure .marks .append (self .line_mark )
357+ self .line_mark_gl .visible = False
358+ if self .state .linestyle == "dashdot" :
359+ self .line_mark .line_style = 'dash_dotted'
360+ else :
361+ self .line_mark .line_style = self .state .linestyle
362+
363+ self .view .figure .marks = [
364+ self .line_mark ,
365+ self .vector_mark ,
366+ self .vector_lines ,
367+ self .scatter_mark ,
368+ self .density_mark
369+ ]
354370
355371 if (
356372 self .state .vector_visible
@@ -374,8 +390,7 @@ def _update_visual_attributes(self, changed, force=False):
374390 self .scale_color_vector .min = float_or_none (self .state .cmap_vmin )
375391 self .scale_color_vector .max = float_or_none (self .state .cmap_vmax )
376392
377- for mark in [self .scatter_mark , self .line_mark_gl , self .line_mark ,
378- self .vector_mark , self .vector_lines , self .density_mark ]:
393+ for mark in self .view .figure .marks :
379394
380395 if mark is None :
381396 continue
@@ -385,12 +400,8 @@ def _update_visual_attributes(self, changed, force=False):
385400
386401 if force or "visible" in changed :
387402 self .scatter_mark .visible = self .state .visible and self .state .markers_visible
388- if "linestyle" in changed :
389- self .line_mark_gl .visible = False
390- self .line_mark .visible = True
391- self .line_mark .visible = self .state .visible and self .state .line_visible
392- else :
393- self .line_mark_gl .visible = self .state .visible and self .state .line_visible
403+ self .line_mark .visible = self .state .visible and self .state .line_visible
404+ self .line_mark_gl .visible = self .state .visible and self .state .line_visible
394405 self .density_mark .visible = (self .state .visible and self .state .density_map
395406 and self .state .markers_visible )
396407 self .vector_lines .visible = self .state .visible and self .state .vector_visible
@@ -401,6 +412,7 @@ def _update_scatter(self, force=False, **kwargs):
401412 self .density_mark is None
402413 or self .scatter_mark is None
403414 or self .line_mark_gl is None
415+ or self .line_mark is None
404416 or self .vector_mark is None
405417 or self .vector_lines is None
406418 or self ._viewer_state .x_att is None
0 commit comments