Skip to content

Commit c7c69e5

Browse files
committed
Add solid line handling
1 parent f5b15d6 commit c7c69e5

File tree

1 file changed

+30
-18
lines changed

1 file changed

+30
-18
lines changed

glue_jupyter/bqplot/scatter/layer_artist.py

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)